我知道这个主题有很多相似的主题,但我无法找到答案。使用git 1.8.3.1我有一个git repo:
/path/to/my/git/repo/.git
我想将存储库移动到 /path/.git
同时保留原始repo的历史记录+从新的根目录添加新文件。 我尝试过将.git文件夹移动到适当的位置,重新添加所有文件并提交,但我已经丢失了原始回购的历史记录。
我该如何正确地做到这一点? (过滤分支?)
由于
更新#1 我的目的是将文件保留在原来的位置,并扩展repo以包含其父目录+保存嵌套文件的历史记录:
旧回购: /路径/到/我/ GIT中/回购/
新回购: /路径/
更新#2 我想也许有一个比this更简单的解决方案,而不移动实际文件。
答案 0 :(得分:1)
所以,基本上这里有两个步骤:
一个。移动git下的文件,以便git repo具有正确的root:
cd /path/to/my/git/repo/
mkdir -p to/my/git/repo/
git mv * to/my/git/repo/
git status #check all files are moved.
git commit -m "megamove!!!"
B中。将结果移动到正确的位置:
mv * /path/
cd /path/
rm -r to/my/git/repo/ #drop empty dir
另外,另一种方法,更简单(但有时如果你有错误的CRLF,它可能不是很好):
mv /path/to/my/git/repo/.git /path/
cd /path
git add -A
git status #check all files are moved.
git commit -m "megamove!!!"
应保留历史记录,请使用git log -M
答案 1 :(得分:0)
.git目录包含Git仓库的元数据。实际的Git回购可能在repo /.
下就您的操作系统而言,您的repo只是一个目录。它可以移动到你想要的任何地方,Git repo(带有历史记录)将随之移动。
因此,在您的示例中,您可能想要的是将repo /移动到/ path:
mv /path/to/my/git/repo /path/.