Git merge报错:error refusing to merge unrelated histories

2025/05/16

一、背景

  1. 电脑本地的一个仓库莫名其妙的没有远程仓库信息了(执行 git remote -v什么输出都没有),不知道是不是我误操作
  2. 只能重新 set-url 下远程的仓库名称
  3. set完毕之后,我看本地 git 历史中是没有 origin 的head显示的,只有本地的。
  4. 执行git pull把远程仓库的信息拉取下来,这个时候遇到标题中的报错: error refusing to merge unrelated histories

二、修复

  1. 在本地仓库中执行

    git pull origin 你的远程仓库名称 --allow-unrelated-histories
    

    这个命令执行完毕之后,git log 中正常出现了 origin 的标识。

  2. 接下来进行正常的 git 操作。

三、为什么会出现这样的报错?

  1. 我的本地分支是一个测试分支,保留着未修改的原始 commit 信息
  2. 远程的分支 commit 信息因为一些信息的变更,全部重新生成了 commit hash id ,虽然 commit message 还是原来的信息,但是 commit id 已经变更
  3. 所以这两个分支虽然表面看起来一样,那些 git 提交历史一样,但是它们并没有共同的祖先,所以报错不相关。
  4. 很容易的验证:查看第一个提交,内容虽然一样,但是 commit id 是不同的。