在git中,冲突产生的原因是因为在合并文件时同一个文件的同一个位置都修改了,并且内容不同;也即两个已经提交的分支的相同文件相同位置的不同操作进行了合并,所以产生了冲突;常见产生冲突的操作有两分支合并和远程仓库代码拉取到本地。
本文操作环境:Windows10系统、Git2.30.0版、Dell G3电脑。
git为什么会产生冲突
一、常见产生冲突操作:
-
两分支合并
-
远程仓库代码拉取(pull)到本地
二。冲突产生原因:
合并文件时,同一个文件的同一个位置都修改了,且内容不同,会产生冲突
三。解决步骤:
1. git status 查看冲突文件
2.vim src/main/java/a.txt (假设a.txt为冲突文件,这里需要为文件的全路径),手动修改冲突部分
3.git add src/main/java/a.txt 告诉Git冲突解决了
4.git commit -m ‘解决冲突’ (解决冲突为注释,可自定义)
两个已经提交的分支的相同文件相同位置的的不同操作进行了合并.
实战演示
(1)情景
本地库中两个不同分支,修改同一个文件同一代码块,两分支先后将修改合并到master分支上,master在合并第二个分支代码时,报错:合并冲突。
(2)本地库
<1>master分支
<2>建立两个分支
<3>两分支修改提交
aBranch分支:
bBranch分支:
(3)合并分支产生冲突
合并aBranch分支(将aBranch分支合并到当前master分支上):
注:
git merge:默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
使用–no-ff参数后,会执行正常合并,在Master分支上生成一个新节点。为了保证版本演进的清晰,建议采用这种方法。
再合并bBranch分支,产生冲突:
mergeTest.txt 文件内容:
(4)解决冲突
在当前分支上(master),找到冲突文件,直接修改冲突代码,add,commit。
注:简单方法,使用vim修改,cat查看冲突文件。(注意要删除git自动生成的冲突代码分隔符)
(5)完成冲突解决
注:提交或者合并都会生成git节点。每个节点对应一个代码版本。
推荐学习:《Git教程》