Git程序员@IT·互联网

使用Git Bash操作Git(七):解决同一文件中的同行冲突

2017-04-19  本文已影响68人  李程鹏

使用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
上一篇 下一篇

猜你喜欢

热点阅读