运行git log --first-parent -p
向我展示了我感兴趣的提交但是我希望看到合并提交的补丁以及非合并提交(-p
仅显示非合并提交的补丁)。
有没有办法查看合并提交的补丁?
答案 0 :(得分:3)
有很多选项可以控制它。
区分合并提交的基本问题是存在多个父级(根据定义,因为它是合并)。什么git show
(我知道,不是git log
,暂时搁置)默认情况下会显示"组合差异",这在另一个不同的地方正确描述文档页面,git diff-tree
:
-c
此标志更改显示合并提交的方式(这意味着仅当命令被赋予一个 tree-ish 或
--stdin
时才有用)。它同时显示了每个父项与合并结果的差异,而不是一次显示父项和结果之间的成对差异(这是-m
选项的作用)。此外,它仅列出了从所有父母修改过的文件。- CC
此标志以与
-c
选项类似的方式更改合并提交修补程序的显示方式。它意味着-c
和-p
选项,并通过省略不感兴趣的帅哥进一步压缩补丁输出,其中父母的内容只有两个变体,合并结果选择其中一个而不进行修改。当所有的人都不感兴趣时,提交本身和提交日志消息不会显示,就像在任何其他“空差异”情况下一样。
我们现在已准备好一直跳到git log
,它实现了所有三个选项(-c
,--cc
和-m
;请注意--cc
使用两个-
个字符,而其他人只使用一个字符。添加其中一个将生成合并提交的补丁。具体来说,您可能需要-m
。这实际上在documentation(靠近网页末尾)中描述:
git log -p -m --first-parent
显示包含更改差异的历史记录,但仅显示 “主分支”透视图,跳过合并后的提交 分支,并显示合并引入的完整变化差异。 只有在遵循严格的合并政策时才有意义 停留在单个集成分支上的主题分支。