我在 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
然后我遇到了这个错误:
fatal: refusing to merge unrelated histories
我不明白为什么我不能这样做,以及如何解决这个问题。
您的存储库的远程副本有一个根提交,没有父级 - 第一个提交带有
README.md
文件。
通过您在本地执行的操作,您的本地存储库也有一个没有父级的根提交。
git merge
拒绝工作,因为它找不到这两个提交的共同祖先。
您可能想一个接一个地重播您的提交,请使用
git rebase
而不是 git merge
:
git rebase origin/master
这应该在“README”提交之上应用您的本地根提交。
如果您想以相反的顺序重播它们(在本地提交之上进行远程提交):使用
git cherry-pick origin/master
。然后,您需要强制推送您的主分支。
如果您有充分的理由在存储库中保留两个根提交:您可以使用
--allow-unrelated-histories
的 git merge
选项。
尝试使用此 git 命令拉取
git pull origin main --allow-unrelated-histories
。
这应该从远程存储库中获取主分支并将其与本地存储库合并,然后您将使用
git push -u origin main
将代码推送到远程存储库。
您收到该错误消息是因为对远程存储库进行了提交,就像您允许 Github 代表您初始化 README 文件时一样。 但由于您的本地存储库缺少该自述文件,因此出现消息:
fatal refusing to merge unrelated branches