结论

当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。

解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。

查看分支合并图:

  1. git log --graph

相关信息

冲突的产生一般都是这两种情况:

  • 远程仓库的代码落后于本地仓库
  • 远程仓库的代码远超本地仓库

在你还未提交代码的时候,你的同事已经提交了代码,就会导致远程仓库代码领先于你的代码

说明

冲突是如何表示的

当产生合并冲突时,该部分会以<<<<<<<, =======>>>>>>>表示。在=======之前的部分是当前分支这边的情况,在=======之后的部分是传入分支的情况。

如何解决冲突

在看到冲突以后,你可以选择以下两种方式:

  • 决定不合并。这时,唯一要做的就是重置indexHEAD节点。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版本。