【发布时间】:2016-09-01 10:49:28
【问题描述】:
通常在审查合并提交时,我们会使用git diff-tree --cc <commit>(或简称为git show <commit>),但我面临以下问题:
假设您将B 合并到A 中,并且在解决冲突期间,您需要从A 或B 分支中选择一个大块来解决它。假设由于某种原因,A 中的帅哥取代了 B 中的帅哥,但因为您可能不知道它并仅通过例如判断。提交日期,您从B 分支中选择大块。
如果您没有进行其他修改,则通过git show 的多父差异将不会显示任何差异输出,因为生成的块完全在其中一个父提交中。
进一步详细说明,如果您有此冲突:
<<<<<<< HEAD
aaa
=======
bbb
>>>>>>> b
删除aaa hunk 并选择bbb,反之亦然,git show <merge_commit> 根本不会显示任何内容,从而阻止您查看合并期间选择了哪个hunk。
这可能会导致难以找到回归线。
如何查看在冲突解决过程中选择了哪些帅哥?
编辑:我所追求的是只查看有冲突的帅哥(因此不是自动合并的)。
【问题讨论】:
-
git show没有向您展示与 A 的区别吗? -
来自docs 和经验,显示与
diff-tree --cc相同的输出,因此对于A和B。 -
那么当你说'通过 git show 的多父差异不会列出任何东西'时你是什么意思?
-
更新了问题
-
好的,现在我明白了——正如文档所说,
git diff-tree --cc“仅列出所有父母修改过的文件”。正如@torek 所说,您需要指定-m来抑制这种行为并针对所有父母进行区分。