合并提交的查看补丁

5

运行git log --first-parent -p会显示我感兴趣的提交记录,但是我想看到合并提交的补丁以及非合并提交的补丁(-p只显示非合并提交的补丁)。

有没有一种方法可以查看合并提交的补丁?

1个回答

7

有许多选项可以控制这个。

合并提交的diff问题在于它有多个父级(根据定义,因为它是一个合并)。git show默认情况下显示的是“组合差异”,这在另一个不同的文档页面中被正确地描述了,详见git diff-tree

-c

此标志更改合并提交的显示方式(这意味着只有在给出一个树状物或--stdin命令时才有用)。它同时显示每个父级到合并结果的差异,而不是一次显示一个父级和结果之间的成对差异(这就是-m选项所做的)。此外,它仅列出所有父级都修改过的文件。

--cc

此标志类似于-c选项,更改合并提交补丁的显示方式。它暗示了-c和-p选项,并通过省略在父级中具有两种变体但合并结果选择其中一种而没有修改的不感兴趣的块来进一步压缩补丁输出。当所有块都不感兴趣时,提交本身和提交日志消息将不会显示,就像在任何其他“空差异”情况下一样。

我们现在可以跳转到git log,它实现了所有三个选项(-c--cc-m;请注意,--cc使用两个-字符,而其他选项只使用一个)。添加其中之一将为合并提交生成补丁。具体来说,您可能需要-m。这实际上在文档中有描述(在网页末尾附近):

git log -p -m --first-parent

显示包括更改差异的历史记录,但仅从“主分支”角度,跳过来自合并分支的提交,并显示合并引入的更改的完整差异。只有在遵循单个集成分支上的所有主题分支合并的严格政策时,才有意义。


正是我想要的!谢谢! - zoran119
我创建了一个别名 git config --global alias.lm "log -m" - Felipe Alvarez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接