使用Git Bash操作Git(七):解决同一文件中的同行冲突
场景:开发人员1修改了README.md文件,然后将它提交到了中央仓库中。开发人员2不知道有人修改了README.md文件,就没有对它进行更新。后来,开发人员2也去修改了这个README.md文件,当他尝试将修改后的内容提交到中央仓库时,就产生了冲突。
1 开发人员1修改文件
开发人员1在README.md文件的末尾插入内容“Developer1 do something here!”:
01-开发人员1修改文件.png
修改完成后,开发人员1将修改后的文件提交到远程的中央仓库中:
02-开发人员1提交文件.png
2 开发人员2修改文件
开发人员2在README.md文件的末尾插入内容“Developer2 do something here!”(开发人员1与开发人员2修改了同一文件中的同一行):
03-开发人员2修改文件.png
修改完成后,当他尝试将修改后的内容推送到中央服务器时,Git会拒绝这个请求,然后提示他需要先进行更新操作:
04-开发人员2提交文件.png
3 开发人员2更新文件
开发人员2输入“git pull”指令来更新文件,但是操作失败。因为两个人修改了文件的同一个地方,所以在文件合并的过程中会发生冲突。
05-开发人员2更新文件.png
看看冲突的文件内容:
06-查看冲突的内容.png
4 使用合并工具解决冲突
可以使用下面的指令打开合并工具:
git mergetool
beyond compare
具体的操作如图所示:
07-使用合并工具.png
打开了合并工具后,只看红色行的内容。如果两边的内容一样,就随便选一边。如果两边的内容不一样,那根据情况指定它们出现的顺序。操作完成后记得点击保存按钮。具体的操作如下图所示:
08-合并冲突代码.gif
合并完成后,命令行窗口显示目前还处于合并状态:
09-合并状态.png
5 开发人员2提交文件
合并完成后,开发人员2就可以将合并的结果提交到自己的本地仓库中。使用的指令是:
git commit -a
其中“-a”表示提交当前目录下的所有内容。
具体的操作如图所示:
10-开发人员2提交文件.png
提交的时候需要填写这次合并的备注信息:
11-填写提交备注.png
接着,将这次的合并结果推送到远程的中央服务器:
12-开发人员2推送文件.png
最后,手动删除冲突备份文件(在使用命令行操作的时候,Git不会帮我们去删除这些备份文件):
13-删除冲突备份文件.png
6 开发人员1更新文件
开发人员2修改了文件后,开发人员1可以更新下来查看修改的结果:
14-开发人员1更新文件.png