首先我们来看看为什么会发生冲突。 git冲突的原因很简单,就是两个分支对同一个代码做了不同的修改。 那么git在合并的时候就会很混乱,不知道要做什么,所以就会产生冲突。
实践
光说不练是没有意义的。
首先我们创建一个文件test.txt并在其中写入测试行。 gitadd和gitcommit。
然后我们检查-b来创建一个新分支。 在此分支中,我们将test.txt之前的行更改为getconflict。 然后我们还添加提交。
最后,我们回到master分支并尝试mergetest_conf分支。 合并后,您将看到以下输出:
输出日志提醒我们这两个第八个.md文件之间存在冲突,即当前正在编辑的文章。 所以也会发生冲突。 不过,文章中的冲突似乎不太方便,所以我们不会提出相关的冲突。 让我们重点关注test.txt文件,这是我们刚刚创建的演示文件。
>>>>>、=======和<<<<<<<<等符号来简要分隔它们的含义。其实,这是很明显的。 这个<<<<<<<
>>>>>>test_conf就是我们合并到的分支的代码。除了直接打开文件之外,我们还可以运行gitdiff命令来查看冲突情况。
解决冲突
手动解决
>>>>,======,<<<<<<。 最后添加回提交。废除合并
合并当然可以完成,但显然不友好。 如果变化量很小的话就可以了。 大了,显然要花费很大的力气。 如果你觉得改动太大,想先放弃合并,可以先考虑其他方法。 您可以使用命令gitmerge--abort,它可以将代码恢复到合并前的状态。 如果您在运行gitmerge后进行了一些人为更改,它们也会在中止后回滚。
gitmerge--abort
mergetool
除了手动合并和中止之外,我们还有其他几种整合工具。 比如git官方开发了一个专门用于合并的工具,叫做gitmergetool。 它会找到两个分支的祖先代码的副本作为基础或基准,然后列出两个分支的变化进行比较。 保存在git编辑器中。
打开后是这样的。 我只用过一次,因为我发现它太难用了。
gitmergetool
IDE工具
除了官方的git之外,常规IDE还提供合并工具。 例如,vscode中的git插件为我们提供了一个非常有用的合并功能,它可以用不同的颜色突出显示不同分支的代码。 并且它还提供了一些非常有用的功能。 他们必须保留当前分支的代码,保留合并分支的代码,并保留两者并比较更改。
使用vscode打开test.txt后,我们将看到:
当我单击“比较”时,它将两个文件对齐在一起,以便我们观察它们各自的更改。 我必须说它非常容易使用。
上一篇:git合并分支到主干冲突
下一篇:git合并怎么没冲突