跳到主要内容

You have not concluded your merge (MERGE_HEAD exists) git拉取失败

· 阅读需 2 分钟
一介布衣
全栈开发者

今天获取git线上仓库代码报了这个错误:

zhangzhi@moke:~/code/ktsg-api$ git pull
You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.

错误可能是因为在你以前pull下来的代码没有自动合并导致的.

有2个解决办法:

1.保留你本地的修改

git merge --abort

git reset --merge

合并后记得一定要提交这个本地的合并

然后在获取线上仓库

git pull

2.down下线上代码版本,抛弃本地的修改

不建议这样做,但是如果你本地修改不大,或者自己有一份备份留存,可以直接用线上最新版本覆盖到本地

git fetch --all

git reset --hard origin/master

git fetch

当然还有一个最笨的方法,就是重新clone一份代码,抛弃这个工作目录,哈哈,开玩笑.

这个报错的本质是什么

它并不是说 git pull 自己坏了,而是 Git 检测到你上一次合并还没真正结束。也就是说,当前工作区正处在一个“合并进行到一半”的状态里,所以它不会允许你继续拉代码把状态弄得更乱。

更稳的排查顺序

看到这个报错时,我更建议先判断一件事:你到底要不要保留本地改动。

  • 要保留:先把当前合并状态处理干净,再提交或暂存
  • 不保留:确认备份后,再用强制回退方式覆盖

这个顺序的价值在于,你不会一上来就做破坏性操作。Git 里很多问题真正麻烦的不是命令不会用,而是还没想清楚本地内容的去留就直接执行了下一步。