这个错误常出现于:git提交代码前没有拉取远程的新代码,commit了之后,push就会报这个错误,会提示你pull代码。但是直接pull的话,就会多出merge branch的提交记录,在gerrit上就会多出冗余的提交记录。因此此时可以采用下面两种方法避免这个问题:
方法1、
git pull --rebase origin 所在分支名 不会产生merge记录,将本地代码先更新为远程最新代码
git push origin 所在分支名 将本地的修改推送至远程仓库
方法2、
step1- 先撤销本地的commit : git reset HEAD~1 即撤销最新一条的提交
step2- 将本地修改的代码stash起来,防止丢失 : git stash
step3- 拉取远程代码,此时直接: git pull ,因为本地已经回退了,不会有merge记录了
step4 - 此时把暂存的代码拿出来:git stash pop
step5- 执行最后的push操作:git push origin 所在分支名
方法一用rebase比较简洁。方法二就是利用回退提交,先拉新代码再提交本地代码就不会出错的原理。两个方法亲测有效的,大家可以一试,欢迎大佬们批评指正~~