在Git中是否有通过比较变化而不是文件来合并的方式(或工具)?

时间:2014-01-03 17:55:02

标签: git merge diff conflict diff3

在Git中,标准合并算法允许您比较两个分支中文件的最终状态,这意味着我必须记住或猜测两个分支中导致该点的变化是什么。

通过显示共同的祖先,在.gitconfig中设置merge conflictstyle = diff3会有所帮助。然而,我仍然需要在脑海中做差异 - 即扫描不同的部分以找出祖先和分支A之间以及祖先和分支B之间发生了什么变化,然后最终将两者都应用于祖先,或者应用一个分支的变化是另一个。

是否有工具可以帮我这么做?我希望能够将一个分支中发生的更改与另一个分支中发生的更改进行比较。理想情况下,该工具还会向我显示我正在合并的更改的提交消息,因此我不必猜测其意图。

1 个答案:

答案 0 :(得分:2)

git cherrygit patch-id可以帮助您找到所需内容。

  

fork-point和。之间每次提交的changeset(或“diff”)    head 与fork-point和。之间的每次提交进行比较   的上游即可。将提交与其获得的补丁ID 进行比较   来自git patch-id计划。

     

上游分支中不存在的每个提交都有其ID   (sha1)报告,以符号为前缀。有相同的   已经在上游分支中的更改前​​缀为减号(-)   标志,以及仅存在于 head 分支中的那些标记为前缀   加号(+)符号:

           __*__*__*__*__> <upstream>
          /
fork-point
          \__+__+__-__+__+__-__+__> <head>