1. 准备工作
首先创建一个文件夹(fix-conflict),并在这个文件夹里添加一个 test.txt 文件。
并往这个文件里添加点东西:
接着执行 git 最基本的三个指令:git init、git add .、git commit -m 'xxx'
提交后我们可以通过 git status 查看当前状态:
OK,没有要提交的内容了,工作树现在很干净。
2. 创建一个分支
为了能产生冲突,我们需要创建一个分支,执行 git checkout -b develop 来创建一个名为 develop 的分支并检出它。
接着修改 test.txt 文件中的内容为 HelloJavaScript:
执行 git status 看看这时的状态:
显然,我们上次的修改还没放入暂存区,执行
git add . 后再执行以下命令:
OK,这个分支的工作树也干净了。
3. 切换到主分支,修改内容后合并
使用 git checkout master 切换到主分支
修改 test.txt 中的内容为 HelloVue :
再执行以下代码:
然后合并之前的 develop 分支:
因为 develop 分支是基于第一次提交创建的,并且修改了第一次提交的内容。这时,你又切回主分支对相同的位置进行了修改,所以合并的时候 git 不知道听谁的,所以就会产生冲突。这时我们可以打开 SourceTree(VSCode中也可以) 然后导入对应的文件,就可以看到冲突了。
上图中右边的 HEAD 表示所指示的版本(也就是你的 master 分支所在的位置,因为你在运行 merge 命令的时候已经检出到了这个分支)在这个区段的上半部分(======= 的上半部分),而 develop 分支所指示的版本在 ======= 的下半部分。 为了解决冲突,你必须选择使用由 ======= 分割的两部分中的一个,或者你也可以自行合并这些内容。
4. 解决冲突
右键冲突的文件,然后选中解决冲突,点击使用我的版本或使用他人版本解决冲突(选择我的版本即使用当前所在分支的内容,他人版本即使用要合并过来的内容)。
然后在下方白色框中输入本次你合并做了什么事,之后点击提交:
好的,以上就是有关冲突是怎么产生的以及如何解决冲突的问题!