冲突分成两种情况
情况一:
A修改文件并提交,同时推送到服务端,此时B修改同一文件,已提交到本地,在推送到服务端时报错,需要先拉取A的修改,拉取的过程中冲突。
举例说明:
A修改文件添加“A同事修改”,提交同时推送到服务端
B进行同样的操作,报以下错误
此时点击拉取,页面显示需要解决冲突,并显示冲突文件,自动生成提交描述。
这里我们配置一个外部文件比较工具,而放弃使用sourceTree默认的diff工具。这个外部文件比较工具是Beyond Compare。下载安装Beyond Compare,比较简单,不做说明。然后在sourceTree中配置。
完成之后,关闭Beyond Compare。
这个时候直接提交就行了,推送和拉取都消失。
情况二:
A修改文件并提交,同时推送到服务端。此时B修改同一文件,未提交。点击拉取,提示需要先提交或者贮藏未提交的内容。如果选择提交那就是情况一,这里直接将未提交的修改贮藏,然后拉取A的修改,完成之后再应用贮藏,此时出现冲突。
这种情况的冲突解决方式与情况一类似,不再说明。
实际开发中,我们遇到的第二种情况会多一点。因为,我们鼓励每天上班之前都“拉取”(pull)一下,开始开发之前也“拉取”(pull)一下,以免和服务端相差太远。
解决冲突过程会产生一个垃圾文件,这个文件是冲突的备份文件。可以使用如下命令去去掉:
git config --global mergetool.keepBackup false