一、背景
- 电脑本地的一个仓库莫名其妙的没有远程仓库信息了(执行
git remote -v
什么输出都没有),不知道是不是我误操作 - 只能重新 set-url 下远程的仓库名称
- set完毕之后,我看本地 git 历史中是没有 origin 的head显示的,只有本地的。
- 执行
git pull
把远程仓库的信息拉取下来,这个时候遇到标题中的报错:error refusing to merge unrelated histories
二、修复
在本地仓库中执行
git pull origin 你的远程仓库名称 --allow-unrelated-histories
这个命令执行完毕之后,git log 中正常出现了 origin 的标识。
接下来进行正常的 git 操作。
三、为什么会出现这样的报错?
- 我的本地分支是一个测试分支,保留着未修改的原始 commit 信息
- 远程的分支 commit 信息因为一些信息的变更,全部重新生成了 commit hash id ,虽然 commit message 还是原来的信息,但是 commit id 已经变更
- 所以这两个分支虽然表面看起来一样,那些 git 提交历史一样,但是它们并没有共同的祖先,所以报错不相关。
- 很容易的验证:查看第一个提交,内容虽然一样,但是 commit id 是不同的。