【问题标题】:Impossible to merge branch: refusing to merge unrelated histories无法合并分支:拒绝合并不相关的历史
【发布时间】:2020-08-28 09:58:21
【问题描述】:

我确实在 Git 上创建了一个远程仓库 ('myRepo')。 我选中了“添加 READ.me”复选框,该复选框也对此“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

我不明白为什么我不能这样做...... 有人可以帮我吗?

【问题讨论】:

  • 在没有现有仓库的情况下先尝试克隆它。当你创建一个新的仓库时,它有不同的历史,所以 git 拒绝在你说没问题的情况下将两者结合起来。
  • 你可以通过允许不相关的历史来说没关系。

标签: git github git-merge git-fetch


【解决方案1】:

您的 repo 的远程副本有一个根提交,没有父级 - 第一个提交带有 README.md 文件。

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

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


您可能希望一个接一个地重放您的提交,使用git rebase 而不是git merge

git rebase origin/master

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


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

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

【讨论】:

  • 正是,非常感谢。同样,就像上面所说的“mrmcgreg”,我可以删除现有的本地 .git repo 并 git clone 远程。
  • 或者你可能会说git pull --rebase origin master,但这实际上与给定的两步解决方案相同,git fetch 后跟 rebase。
猜你喜欢
  • 2017-12-29
  • 2017-02-23
  • 2016-10-22
  • 2017-01-09
  • 2017-09-02
  • 2014-06-30
  • 1970-01-01
  • 2018-11-06
  • 2018-10-11
相关资源
最近更新 更多