git冲突出现的原因及解决方案

摘要:简单来说就是本地修改的文件和目标远程库的同一个文件都有修改。这时无论是pull丶push丶merge时都会产生冲突。

简单来说就是本地修改的文件和目标远程库的同一个文件都有修改。这时无论是pull丶push丶merge时都会产生冲突。


Git冲突情况举例:

1.不同分支下的merge

比如在不同分支下进行分支合并时,我们在本地修改了a文件并把a文件的修改push到了test分支下,接着我们切换到master分支下将test分支上的修改合并到当前master分支下时,如果master分支下的a文件也有修改的话,这时在进行merge也会产生冲突。(因为这个两个分支是不同步的,两个分支下的同一个文件都有修改)

2.同一个分支下的pull或push

比如在同一个分支下,对本地的a文件做出了修改,此时我们在进行pull或push时如果远程分支下下的a文件也有修改,那么代表本地和远程分支的代码是不同步的,此时也会引起冲突。


Git冲突解决方案:

要想不产生冲突的习惯是:修改文件之前先git pull,获取远程最新的代码,同步完了之后再对代码进行修改;亦或者事先和同时操作代码的同事沟通,这样可以大概率的避免冲突的产生。

方法一(推荐使用):
git pull 出现冲突后丢弃本地冲突文件修改,采用远程文件覆盖本地文件
git checkout  [文件路径]
例:git checkout test/src/main/resources/spring-shiro.xml  

方法二:
git pull 出现冲突后可以暂存本地修改git stash ,然后git pull 更新代码,git stash list 可查看暂存记录列表,释放本地暂存 git stash apply stash@{0} ,出现冲突文件,找到并解决,然后可以提交git add . 加入索引库,然后本地提交git commit -m '注释' 最后git push到远程

方法三:
1.git pull
更新代码,发现
error: Your local changes to the following files would be overwritten by merge:pom.xml
Please commit your changes or stash them before you merge.
这说明你的pom.xml与远程有冲突,你需要先提交本地的修改然后更新。


2.git add pom.xml

git commit -m '冲突解决'

提交本地的pom.xml文件,不进行推送远程


3.git pull

更新代码
Auto-merging pom.xml
CONFLICT (content): Merge conflict in pom.xml
Automatic merge failed; fix conflicts and then commit the result.
更新后你的本地分支上会出现 (develop|MERGING)类似这种标志

4.找到你本地的pom.xml文件,并打开
你会在文件中发现<<<<<<< HEAD ,=======  ,>>>>>>> ae9a0f6b7e42fda2ce9b14a21a7a03cfc5344d61
这种标记,<<<<<<< HEAD和=======中间的是你自己的代码,  =======  和>>>>>>>中间的是其他人修改的代码
自己确定保留那一部分代码,最后删除<<<<<<< HEAD ,=======  ,>>>>>>>这种标志

5.git add pom.xml
git commit -m '冲突解决结束'
再次将本地的pom.xml文件提交

6.git push
将解决冲突后的文件推送到远程

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_10244