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 里很多问题真正麻烦的不是命令不会用,而是还没想清楚本地内容的去留就直接执行了下一步。
