git冲突的场景
- 情景一:多个分支代码合并到一个分支时,不同的分支修改了同一个文件(不管在什么地方)或者不同的分支修改了同一个文件的名称
- 情景二:远程分支进行push或者pull时,同一个文件被修改了,此时就需要解决冲突
情景一
在master分支上给readme.md这样的文件,其中readme.md内容为空,并且提交到master分支上。
创建一个新的分支
git checkout -b "dev"
然后在dev分支下将readme.md这个文件内容修改为
我喜欢python
并且提交到dev分支上。然后切换到master分支上
git checkout master
我们在master分支上对readme.md进行修改,添加如下内容为
我喜欢java
并且提交到master分支上,
git add readme.md
git commit -m "master提交我喜欢java"
重点来了,此时,我们需要将dev分支中内容合并到master中,即
git merge dev
报错
[root@localhost learngit]# git merge dev
Auto-merging readme.md
CONFLICT (content): Merge conflict in readme.md
Automatic merge failed; fix conflicts and then commit the result.
解决冲突
第一步:打开冲突的文件,内容如下:
<<<<<<< HEAD
我喜欢java
=======
我喜欢python
>>>>>>> dev
然后需要将<<<<<< HEAD和>>>>>>>dev之间的内容进行修改,并且需要删除<<<<<< HEAD和>>>>>>>dev
修改为如下内容
master喜欢java, dev喜欢python
然后提交到当前分支上,即master上
[root@localhost learngit]# git add readme.md
[root@localhost learngit]# git commit -m "解决conflict"
以上就能解决冲突的内容!
然后我们可以把dev分支给删除了
[root@localhost learngit]# git branch -d dev
情景二
内容相同,只不过解决的时候,我们可以先进行pull,然后在本地的分支的文件中会出现类似
<<<<<< HEAD
和>>>>>>>dev
然后我们在本地修改文件,然后同时删除<<<<<< HEAD
和>>>>>>>dev
,先提交到本地分支上,然后再push到远程分支就可以解决冲突了
具体过程请参考:参考文章2
参考文章
-
https://www.cnblogs.com/yuerdong/p/10309037.html
-
https://jingyan.baidu.com/article/455a9950535895a1662778dc.html
-
https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424