3

git log根据我当前签出的分支,输出会有所不同。它在 git 文档中的什么地方解释了这种行为?

我看了看,git log --helpgit rev-list --help没有看到任何解释git log基于我签出的分支的上下文相关的内容。

编辑:
我已经阅读了@max 和@James 提到的以下部分,并且很清楚当其中一个提交被省略并被..指定时会发生什么。但是当两个提交都被省略时会发生什么是模棱两可的。当一个提交被省略并且..被省略时,它也是模棱两可的:

<从>..<直到>

仅显示指定的两个提交之间的提交。当 <since> 或 <until> 被省略时,它默认为 HEAD,即当前分支的尖端。

因此,例如,以下内容
git log master.. 等价于: 等价于:
git log master..HEAD

git log ..master相当于:
git log HEAD..master

但是,如果<since> 和 <until> 都被省略了,那又如何呢
git log等于
git log HEAD..HEAD

那么git log<since>..<until> 格式中的等价物是什么?

如果只列出了一个提交,但没有列出,..那又如何呢?
git log foo相当于:
git log foo..HEAD
git log HEAD..foo

4

2 回答 2

3

git-log 手册页的第一部分之一:

<从>..<直到>

仅显示指定的两个提交之间的提交。当 <since> 或 <until> 被省略时,它默认为 HEAD,即当前分支的尖端。

git log需要一个点(或多个点)开始,所以当没有提供修订时,它默认为HEAD,它指向当前分支。

于 2013-02-26T00:13:08.250 回答
1

Git log 有一个隐含的参数 HEAD 所以当你这样做时

混帐日志

你实际上在做

git日志头

这意味着您将从当前分支的尖端获取日志

Git 日志手册中获取 since..until 选项

仅显示指定的两个提交之间的提交。当 或 被 > 省略时,它默认为 HEAD,即当前分支的尖端。如需更完整的 > 拼写 and 的方法列表,请参阅 gitrevisions(7)。

根据更新的问题,以下应解释您所说的所有情况

来自Git 修订版

例如,origin.. 是 origin..HEAD 的简写,并询问“自从我 > 从 origin 分支分叉后我做了什么?” 类似地,..origin 是 HEAD..origin 的简写,并且 > 询问“自从我从他们那里分叉后,origin 做了什么?” 请注意,.. 意味着 >HEAD..HEAD 是一个空范围,可以从 HEAD 到达和无法到达。

如果 .. 被省略,那么它只是

git log <rev>

其中包括可从 rev (即祖先)访问的提交。如手册中所述,这在git-rev-list谁的选项适用于 git-log 中进行了解释。

于 2013-02-26T00:19:56.690 回答