Git 日志的 -r 选项有什么作用?
What does the -r option of Git log do?
手册页 git-log(1) 说:
-r
Show recursive diffs.
所以我们可以换一种方式来提出这个问题:
这里的"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
.
,此命令也会查看子目录
该选项来自 git diff-tree
docs,在 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
该选项通过 diff-options.txt.
包含在 git-diff-tree.txt and the file is included in git-log.txt 的文档中
我怀疑 git log
文档中包含该选项是文档生成的产物。至少我不能让这个选项在 git log
.
中对我有用
手册页 git-log(1) 说:
-r
Show recursive diffs.
所以我们可以换一种方式来提出这个问题:
这里的"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
.
该选项来自 git diff-tree
docs,在 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
该选项通过 diff-options.txt.
包含在 git-diff-tree.txt and the file is included in git-log.txt 的文档中我怀疑 git log
文档中包含该选项是文档生成的产物。至少我不能让这个选项在 git log
.