如果两个分支上都对同一个文件进行了修改, 那么就有可能发生冲突.
首先创建一个分支, 并切换到该分支上:
然后修改index.html, 修改几个地方吧.
然后查看状态, 并commit:
然后切换到master, 并编辑同一个文件:
而这时index.html并不是realwork分支修改后的样子, 而是修改之前的样子:
然后修改index.html, 修改几处可能引起冲突的地方.
commit:
然后查看log:
接下来最应该做的就是diff:
也可以使用可视化工具进行diff:
下面进行合并:
不出所料, 冲突发生了, 自动合并失败.
现在的状态, 应该叫做Merging状态.
现在打开index.html是这样的:
可以看到两处冲突, 每处都有HEAD(master)版的和realwork分支版的.
上图我使用的是Visual Studio Code, 可以点击上面的按钮来进行冲突的解决, 也可以手动修改文件进行解决.
但是在这里我使用我配置好的mergetool:
git mergetool. 这个命令将会打开p4merge(我本机配置的mergetool):
按图示操作, 点击图标选择不同的版本, 最后点击保存即可.
关闭p4merge:
然后commit:
commit之后, 状态就不再是merging了, 但是会出现一个未被追踪的文件:
这是因为在解决冲突的时候, git会保存一个带有触痛的原始版本, 以备不时之需:
但是.orig文件是不应该被追踪的, 所以需要添加到.gitignore文件中:
然后查看状态:
这次只有.gitignore发生了变化.
commit:
最后可以删除 realwork 分支了:
查看log:
Ok.