Git:代码冲突常见解决方法
情景一:
如果系统中有一些配置文件在生产服务器上做了配置修改,然后后续开发又新添加一些配置项的时候,
在代码合并的时候,会发生如下代码冲突:
error: Your local changes to the following files would be overwritten by merge: public/conf/application.ini Please commit your changes or stash them before you merge.
解决方案:(保留本地的修改同时又把远程的合并过来)
1:如果希望保留生产服务器上所做的改动,同时并入新配置项, 处理方法如下:(记住这3步曲)
1 git stash //将目前还不想提交的但是已经修改的内容进行保存至堆栈中 2 git pull 3 git stash pop
git stash
的时候会把你本地快照,然后 git pull
就不会阻止你了,pull 完之后这时你的代码并没有保留生产环境的修改。
如果仅仅使用 到第二步,则会把本地修改的配置替换到生产环境中
使用 git stash pop ,如有冲突,则会出现如下效果,需要到代码中去解决冲突。
会发现发生冲突的本地修改还在,这时候你该commit push啥的就悉听尊便了,
2:不想保存本地修改,直接覆盖
直接将本地的状态恢复到上一个commit id 。然后用远程的代码直接覆盖本地就好了
git reset --hard git pull origin master
---------------------------------------------------------------------------------------------------
error: Pulling is not possible because you have unmerged files.
在git pull的过程中,如果有冲突,那么除了冲突的文件之外,其它的文件都会做为staged区的文件保存起来。
解决方案:
1 git reset --hard FETCH_HEAD 2 git pull就会成功。