##实习的时候发生了很多次Git push冲突,解决的时候问大佬,都是模模糊糊的解决完就不知道了。这次特意查一下记录方法。
公司采用Gerrit管理代码,所以其实总共分两步,自己git push完之后,代码审批通过之后,才会合并到对应分支。
所以有两种冲突,一种是在git push的时候提示冲突,这是因为在你提的时候,已经有其他同事提了代码,并且审批通过,代码已经到了分支上,所以会在git push的时候就直接提示冲突了。一种是git push没有提示冲突,但是,在Gerrit提示合并冲突,就是在你提的时候,已经有同事提了代码,但是还没过审批,所以同事的代码也还没到git上,但是在Gerrit的时候,管理者审批的时候有先后顺序,会提示冲突。
#预防发生冲突的方法:在每次push前git pull一下,保证本地代码都是最新的。
#冲突解决方法:
第一种冲突:在Git push的时候提示冲突了。
这种解决方法可以使用git stash
git stash
保存本地代码,然后拉取最新的远程分支代码
git fetch --all //只是下载远程内容,不做任何合并
git reset --hard origin/master //把HEAD指向刚下载的最新版本
再使用git stash apply应用最近存储,重新push即可。
第二种冲突:在Gerrit提示冲突
这种没有办法,因为在本地git会认为你已经提交了代码到git上,所以只能备份好本地新的文件,然后强行覆盖本地文件,再把备份好的重新拉进来。