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