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
参数,此命令也会查看子目录。
-m
、-c
和--cc
选项的文档在差异文本文件中,这些文件包含在git log
和git show
文档文件中。但是前端的log
和show
命令将这些选项的默认值设置得非常不同。如果你仅仅阅读文档,你会认为git log
默认显示合并的差异,但实际上git log
默认不显示任何差异(git show
默认显示合并的差异)。 - torek