我需要将两个Git存储库合并到一个全新的第三个存储库中。 我按照以下说明操作,但结果不符合我的预期。 Merge two Git repositories without breaking file history
看看这个:
主人没有被分配。
您可以自由使用我的示例存储库
这是我的合并结果。
这是我想要的情况:(画解决方案!!!)
我如何应对目前的情况:
# 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
感谢所有帮助!
更新:答案
正确的答案是变基,而不是合并。
代码:
# 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
还有一个问题。第二个回购失去父视图。我发布了一个后续问题:Merge two Git repos and keep the history
答案 0 :(得分:1)
这很容易,而不是合并使用rebase。假设你想先repoA/master
做(在获取和添加遥控器之后)
# 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
请注意,rebase可能具有潜在的破坏性,起初有点不直观,所以我强烈建议先阅读它们(上面链接中的SO文档是一个很好的起点)