解决冲突
原创2019年3月1日大约 2 分钟
结论
当 Git 无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
解决冲突就是把 Git 合并失败的文件手动编辑为我们希望的内容,再提交。
查看分支合并图:
git log --graph
相关信息
冲突的产生一般都是这两种情况:
- 远程仓库的代码落后于本地仓库
- 远程仓库的代码远超本地仓库
在你还未提交代码的时候,你的同事已经提交了代码,就会导致远程仓库代码领先于你的代码
说明
冲突是如何表示的
当产生合并冲突时,该部分会以<<<<<<<
, =======
和 >>>>>>>
表示。在=======
之前的部分是当前分支这边的情况,在=======
之后的部分是传入分支的情况。
如何解决冲突
在看到冲突以后,你可以选择以下两种方式:
- 决定不合并。这时,唯一要做的就是重置
index
到HEAD
节点。git merge --abort
用于这种情况。 - 解决冲突。
Git
会标记冲突的地方,解决完冲突的地方后使用git add
加入到index
中,然后使用git commit
产生合并节点。
你可以用以下工具来解决冲突:
- 使用合并工具。
git mergetool
将会调用一个可视化的合并工具来处理冲突合并。 - 查看差异。
git diff
将会显示三路差异(三路合并中所采用的三路比较算法)。 - 查看每个分支的差异。
git log --merge -p <path>
将会显示HEAD
版本和MERGE_HEAD
版本的差异。 - 查看合并前的版本。
git show :1:文件名
显示共同祖先的版本,git show :2:文件名
显示当前分支的HEAD
版本,git show :3:文件名
显示对方分支的MERGE_HEAD
版本。