无法合并分支:拒绝合并不相关的历史记录

joz*_*o22 4 git github git-merge git-fetch

我在 Git 上创建了一个新的远程存储库 ('myRepo')。我选中了“添加 README.md”复选框,这也对此“myRepo”存储库进行了提交。

然后我创建一个新文件夹,在其中添加一些文件并执行以下操作:

git init
git add .
git commit -m "init"
git remote add origin https://github.com/jozinho947/myRepo.git

# get the READ.me fetched on the 'origin/master' branch locally
git fetch

# get the READ.me merged in my local 'master' where i'm pointing
git merge origin/master
Run Code Online (Sandbox Code Playgroud)

然后我有这个错误:

fatal: refusing to merge unrelated histories
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我不能这样做,以及如何解决这个问题。

LeG*_*GEC 14

您的存储库的远程副本有一个根提交,没有父级 - 这是文件的第一次提交README.md

通过您在本地执行的操作,您的本地存储库还有一个没有父级的根提交。

git merge拒绝工作,因为它找不到这两个提交的共同祖先。


您可能想一个接一个地重播您的提交,请使用git rebase而不是git merge

git rebase origin/master
Run Code Online (Sandbox Code Playgroud)

这应该在“README”提交之上应用您的本地根提交。


如果您想以相反的顺序重播它们(在本地提交之上进行远程提交):使用git cherry-pick origin/master. 然后,您需要强制推送您的主分支。

如果您有充分的理由在存储库中保留两个根提交:您可以--allow-unrelated-histories使用git merge.

  • 或者,您可能会说“git pull --rebase origin master”,但这实际上与给定的两步解决方案相同,“git fetch”后跟 rebase。 (2认同)