【问题标题】:What does git log --all do?git log --all 有什么作用?
【发布时间】:2015-04-20 19:25:08
【问题描述】:

为什么git log 不简单地记录所有最新的提交?

这是什么意思?

--all
       Pretend as if all the refs in refs/ are listed on the command line as <commit>.

我假设,一旦翻译成简单的英语,这意味着显示所有最新的提交。

谁能澄清一下。

【问题讨论】:

  • 感谢您提出这个问题 - 我的一些别名中有“log --all”,我认为这意味着“查看所有分支,而不仅仅是当前分支”(看起来是或多或少是正确的),但我今天查看了文档只是为了确定,然后再告诉别人使用它。我读了那句话并想“WTF?”。

标签: git


【解决方案1】:

不,这并不意味着它会显示所有最新提交。它显示了分支、标签和其他 refs 历史中的所有提交,但它不显示无法从任何 ref 访问的提交。无法从任何 ref 访问的提交的典型示例是当您刚刚运行 git commit --amend 时:之前的提交仍然存在于本地,但它不再可访问并且不会显示在 git log --all 中。但git reflog 会确认它确实仍然存在。

至于为什么--all 不是默认值:您通常不希望这样。例如,如果您在分支 master 上,并且运行 git log,您通常对任何功能分支的历史不感兴趣,您通常希望查看 master 的历史。

如果您通常需要 --all 行为,我建议您创建一个别名。

【讨论】:

    【解决方案2】:

    根据git --all missing commit这里的帖子:

    log --all 仅用于列出 refs/ 中引用的提交(如标签、heads 等)

    同一页还说:

    --all 选项不会告诉 git log 显示所有提交。它要求所有参考的日志,基本上是你的分支和标签。

    【讨论】:

      【解决方案3】:

      因为想查看所有分支/等的历史记录。在工作时不像想查看特定事物的历史记录那样常见,通常是当前分支。

      我假设,一旦翻译成简单的英文,这意味着显示所有最新的提交。

      没有。 refs/ 包含分支和标签之类的东西。如果您想查看特定分支或特定分支集的历史记录,请在 git log 命令中列出它们。如果您想查看所有分支/标签/等的历史记录,则可以使用--all 快捷方式。

      Git 日志不仅显示“最新提交”:它显示符合给定标准的所有提交,其中有多个维度。例如,提交是在哪个分支上,是在特定范围内提交,等等。

      【讨论】:

        【解决方案4】:

        来自 Scott Chacon 和 Ben Straub 的 Pro Git 第 68 页:

        git log 不会一直显示所有的分支。 [...] 默认情况下,git log 只会显示提交历史下面你的分支 检查过了。要显示所需分支的提交历史记录,您必须明确指定它:git log testing。要显示所有分支,请将--all 添加到您的 git log 命令中。

        所以基本上,如果没有--all,您只会看到实际构成当前分支的提交。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-03-31
          • 2013-07-25
          • 2022-06-14
          • 2014-03-16
          • 1970-01-01
          • 2019-12-30
          • 1970-01-01
          相关资源
          最近更新 更多