"git log --all"是什么意思?

36

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

这是什么意思?

--all
       Pretend as if all the refs in refs/ are listed on the command line as <commit>.
我认为,一旦翻译成简明的英语,它的意思是显示所有最新的提交。有人可以澄清吗?

6
谢谢您的提问 - 我的一些别名中含有 "log --all",我认为它的意思是“查看所有分支,而不仅仅是当前的分支”(这似乎是更或多或少正确的),但我今天查看了文档以确保在告诉其他人使用之前。我读了那句话,心想“什么鬼?”。 - Michael Burr
4个回答

23

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

至于为什么--all不是默认值:通常情况下你不需要那个。例如,如果你在主分支上,运行git log,你通常不会对任何功能分支的历史感兴趣,你通常只想看到主分支的历史。

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


1
你澄清了 --all 不会做的事情,并且真正的答案有点隐藏在你的第二句话中(通过否定)。对于非英语母语的人来说,阅读起来有点困难。如果我理解正确的话(我的英语也不是很好,只是我的第三种语言...),它可以更简洁地重写为“git log --all 显示所有提交 可从任何引用到达”。这是否是你句子的正确理解? - exhuma

4
根据此处的帖子 git --all missing commit

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

同一页面还说到:

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


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

git log 并不总是显示所有的分支。默认情况下,git log 只会显示当前所检出分支下的提交历史记录。如果要显示所需分支的提交历史记录,必须显式指定它:git log testing。如果要显示所有分支,则在 git log 命令后添加 --all

因此,没有使用 --all,您只能看到实际构成当前分支的提交记录。

1
因为在工作中,想要查看所有分支/等等的历史记录并不像想要查看特定内容(通常是当前分支)的历史记录那样常见。
我认为,一旦转换成普通英语,它的意思就是显示所有最新的提交。
不是。refs/ 包含诸如分支和标签之类的内容。如果您想查看特定分支或一组特定分支的历史记录,则在 git log 命令中列出它们。如果您想查看所有分支/标签等的历史记录,则可以使用 --all 快捷方式。
Git 日志不仅显示“最新提交”:它显示符合给定条件的所有提交,其中有几个维度,例如,提交位于哪些分支上,提交是否在特定范围内等等。

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