在iOS里使用Gerrit,已经好几次碰到cannot merge问题了,每次都要花不少功夫去解决,很是烦人!为防止以后再次像个stupid入坑,so赶快记下笔记谨记教训!
1. 出现cannot merge的场景
当提交了本次的修改文件后,准备在Gerrit上review时,发现
cannot merge
, 所以就立即在本地git log
,查看本地提交记录,并与gerrit上的提交记录对比,发现本地缺少两次记录,还是自己提交的记录(一脸懵逼😓),不知道为什么会出现这种情况。
2.本次解决的方法
- 如果
git status
,发现由于你的不当操作,已经有了confilct文件,先解决confilct文件。 - 首先记下当前不能merge 的
commitid 这里假设为ID1
,然后强行拉取缺少的记录
git pull --rebase
此时使用git log
,会发现本地记录已经与Gerrit同步,记下最新的commitid 假设为ID2
。 - 然后使用如下命令,回到cannot merge的版本
git reset --hard ID1
这时又回到了cannot merge版本,然后再进行一次特别的版本回退git reset --soft ID2
,这个命令时只回退commitid,不回退写过的代码,所以此时你的代码很完整,到这里,已经解决cannot merge的问题了 - 正常提交你的代码
git add .
// commit 并且进行代码签名
git commit --amend -s -m "xxxx"
// push到远程当前开发分支的代码
git push origin developer
👌代码已经可以正常submitl了~~