Merge two Git repositories and keep the master history
我需要将两个Git存储库合并到一个全新的第三个存储库中。我按照下面的说明操作,但结果不是我所期望的。合并两个Git存储库而不破坏文件历史记录
看看这个:
主人没有联合。
- 是否可以将所有内容合并到同一个主控形状上?
- 我想有一个清白的主人的历史。
您可以在Github上自由使用我的示例存储库:
- 网址:https://github.com/dimitridewaele/repoa
- https://github.com/dimitridewaele/repob
这是我的合并结果。
- 网址:https://github.com/dimitridewaele/repo
这就是我想要的情况:(画画解决方案!!!!)
我如何面对目前的情况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # Assume the current directory is where we want the new repository to be created # Create the new repository git init # Before we do a merge, we have to have an initial commit, so we'll make a dummy commit dir > Read.md git add . git commit -m"initial commit" # Add a remote for and fetch the old RepoA git remote add -f RepoA https://github.com/DimitriDewaele/RepoA # Merge the files from RepoA/master into new/master git merge RepoA/master --allow-unrelated-histories # Do the same thing for RepoB git remote add -f RepoB https://github.com/DimitriDewaele/RepoB # Merge the files from RepoB/master into new/master git merge RepoB/master --allow-unrelated-histories |
感谢您的帮助!
更新:答案
正确的答案是重新设置基码,而不是合并。
- https://github.com/dimitridewaele/repomerged
代码:
1 2 3 4 5 | # Rebase the working branch (master) on top of repoB git rebase RepoB/master # Rebase teh working branch (master with RepoB) on top op repoA git rebase RepoA/master |
还有一个问题。第二个回购将丢失父视图。我发布了一个后续问题:合并两个Git回购并保留历史记录
这很容易,而不是合并使用REBASE。假设您想先使用
1 2 3 | # starting on master git rebase RepoB/master # place master on top of masterB git rebase RepoA/master # place master (with masterB) on top of masterA |
请注意,钢筋具有潜在的破坏性,一开始有点不具说服力,因此我强烈建议首先阅读它们(因此,上面链接中的文档是一个很好的开始位置)。