Git log的-r选项是什么意思?

9

man页git-log(1)说:

-r
显示递归差异。

因此我们可以换一种方式来提出问题:

在这个上下文中,“recursive diffs”是什么意思。

从@phd获取这个答案之后,我进行了一些测试,旨在指示方向:

如果我在当前的Git源代码库(最近从https://github.com/git/git.git克隆)中以检出的master(目前指向提交6a6c0f1)执行以下命令,则它们会给出相同的输出:

git log --name-only -m
git log --name-only -m -r

为了使此功能正常工作,可能需要将diff.renameLimit增加到大约3150左右。我尝试过Git版本2.10.2和2.17.1,结果相同。

此外,命令

git log --name-only -m master~..master

输出

commit 6a6c0f10a70a6eb101c213b09ae82a9cad252743
Author: Junio C Hamano <gitster@pobox.com>
Date:   Thu May 9 00:37:54 2019 +0900

    The eighth batch

    Signed-off-by: Junio C Hamano <gitster@pobox.com>

Documentation/RelNotes/2.22.0.txt

从最后一行可以看出,即使没有-r参数,此命令也会查看子目录。

1
类似的,-m-c--cc选项的文档在差异文本文件中,这些文件包含在git loggit show文档文件中。但是前端的logshow命令将这些选项的默认值设置得非常不同。如果你仅仅阅读文档,你会认为git log默认显示合并的差异,但实际上git log默认显示任何差异(git show默认显示合并的差异)。 - torek
1个回答

5
该选项来自于 git diff-tree 文档,在 git diff-tree 中确实起作用;参见以下示例:
$ git diff-tree master~ master
:100644 100644 a2be0e5e5959396fb85445cfff714d7b04a1231b 5d7a2a0a4fd6fbaf439aa08bb7f17052a65a5236 M  ANNOUNCE
:100644 100644 22e746900ab77a79b4cb6780f536a517771fe276 f2aae0e9c7c87226f4f5c06ca006f4d04ce79dc1 M  ChangeLog
:040000 040000 54ef4d981c00162085347031d31286d630258153 76d21516ed54422a8981a31a9a0bf47dc5e5af6f M  mimedecode

$ git diff-tree -r master~ master
:100644 100644 a2be0e5e5959396fb85445cfff714d7b04a1231b 5d7a2a0a4fd6fbaf439aa08bb7f17052a65a5236 M  ANNOUNCE
:100644 100644 22e746900ab77a79b4cb6780f536a517771fe276 f2aae0e9c7c87226f4f5c06ca006f4d04ce79dc1 M  ChangeLog
:100644 100644 4ca2f25d2d061dba16294d67ab8018ea00be2b37 ead1ab38493c7e5119d8204a8731747cc534647c M  mimedecode/mimedecode.py

该选项包含在文档中:git-diff-tree.txt,该文件通过diff-options.txt包含在git-log.txt中。

我怀疑该选项被包含在git log文档中是文档生成的副产品。至少我无法让该选项在git log中起作用。


谢谢您,@phd,您快速而富有启发性的回答。在Git源代码库中尝试git log -r,我也没有看到任何该选项的效果。我已经在问题中补充了这一点。 - Jürgen
2
事实上,这是 Git 文档(和 Git 命令)的一个普遍问题:它们共享源代码,因此提供的选项可能没有效果,或者有些被记录下来但根本没有效果,还有一些情况下,文档分解不当,但我认为其中大部分已经随着时间的推移得到了修复,实际上被命令拒绝。 - torek
1
已从git-log文档中删除 https://github.com/git/git/commit/6cea104b2c0266d61fbce7e9ba485dc6d13c0c8f - Yoichi Nakayama

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