试图将git存储库移动到另一个存储库,失败了

时间:2012-03-09 15:24:20

标签: git repository

我有两个git存储库:

git_repo_A: https://github.com/gnychis/coexisyst
git_repo_B: https://github.com/gnychis/android-wireless-monitor

我想将git_repo_A中的所有内容移动到git_repo_B中名为:application的子目录中。我想保留所有提交和文件历史记录。

因此,移动后,git_repo_A将如下所示:

git_repo_A/application/git_repo_B

我发现这个网站基本上描述了我想要的确切操作:http://www.nomachetejuggling.com/2011/09/12/moving-one-git-repo-into-another-as-subdirectory/

所以我试了一下,但我不认为它做了我想要的。

看起来最终发生的事情是主目录中的两个。*文件被添加到git_repo_A / ...然后我想要显示为git_repo_A / application的所有内容最终都作为删除操作。以下是移入git_repo_A的相关两个操作:

https://github.com/gnychis/android-wireless-monitor/commit/23e6639221733158d197bf7c29df8998e8a5c2ef

https://github.com/gnychis/android-wireless-monitor/commit/455ba86a80d8300b16bdd9527c444ebad78f7a9a

我完全按照说明操作,但这并不意味着说明是正确的。我认为他们移动整个目录而不重新添加它是奇怪的。但是,我担心如果你移动它然后重新添加它,它就不会保留文件历史记录。

我是唯一使用这些存储库的人。因此,重置3月9日发生的所有内容并重新开始:https://github.com/gnychis/android-wireless-monitor/commits/

也是一件好事

1 个答案:

答案 0 :(得分:3)

我之前做过类似的事情。它几乎与链接中列出的进程完全相同,除了这允许您在提交合并之前进行清理。

1)在RepoB(您要保留的那个)中,向RepoA添加遥控器 git remote add RepoA <path_to_repo>

2)将RepoA历史记录提取到RepoB中 git fetch RepoA

3)合并您的相关分支机构(假设您使用的是RepoB / master) git merge RepoA/master

4)将RepoA文件移动到相应的子文件夹并提交
git add .
git commit -a


如果您没有对RepoB做任何事情,因为按照您发布的说明,您可以这样做: git reset HEAD~
现在移动任何文件并清理你需要的东西 git add .
git commit -a


就移动文件和保存历史而言,git默认会跟踪少量文件的重命名,因为这样做很慢。如果您希望它跟踪所有内容,您可以使用以下命令
git config --global diff.renamelimit 0