将Git存储库从当前文件夹向上移动3级,保留历史记录并添加新文件

时间:2016-02-29 15:32:31

标签: git

我知道这个主题有很多相似的主题,但我无法找到答案。使用git 1.8.3.1我有一个git repo:

/path/to/my/git/repo/.git

我想将存储库移动到 /path/.git

同时保留原始repo的历史记录+从新的根目录添加新文件。 我尝试过将.git文件夹移动到适当的位置,重新添加所有文件并提交,但我已经丢失了原始回购的历史记录。

我该如何正确地做到这一点? (过滤分支?)

由于

更新#1 我的目的是将文件保留在原来的位置,并扩展repo以包含其父目录+保存嵌套文件的历史记录:

旧回购: /路径/到/我/ GIT中/回购/

新回购: /路径/

更新#2 我想也许有一个比this更简单的解决方案,而不移动实际文件。

2 个答案:

答案 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/.