【问题标题】:What does the -r option of Git log do?Git日志的-r选项有什么作用?
【发布时间】:2019-05-12 14:03:33
【问题描述】:

手册页git-log(1) 说:

-r
显示递归差异。

所以我们可以换个方式提出这个问题:

在这种情况下,“递归差异”是什么意思。

从@phd 那里得到this answer 后,我做了一些针对指定方向的测试:

如果我在当前版本的 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 选项的文档位于 diff doc 文本文件中,git loggit show 文档文件都包含这些文档。但是前端的logshow 命令设置这些选项的default 值完全不同。如果您只是阅读文档,您会觉得git log 将默认显示合并差异,但实际上git log 默认为 not 显示 any 差异(git show 默认为组合差异)。

标签: git git-log


【解决方案1】:

该选项来自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

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

我怀疑在git log docs 中包含该选项是文档生成的产物。至少我不能让git log 中的选项对我有用。

【讨论】:

  • 感谢@phd,您的快速而有启发性的回答。在 Git 源代码库中使用git log -r,我也看不到该选项的任何效果。我在问题中对此进行了补充。
  • 事实上,这是 Git 文档(和 Git 命令)的普遍问题:它们共享源,因此可以提供最终无效的选项,和/或记录无效的选项或者——在某些文档分解不明智的情况下,尽管我认为其中大部分已经随着时间的推移而得到修复——实际上被命令拒绝了。
猜你喜欢
  • 2016-08-03
  • 1970-01-01
  • 2021-08-02
  • 2015-02-05
  • 1970-01-01
  • 2020-06-22
  • 2013-07-25
  • 2020-01-18
  • 2023-03-07
相关资源
最近更新 更多