我正在尝试通过以下几行检查哪些提交合并到两次提交之间的原点中:
git log --merges --first-parent --oneline origin 7284b1a6dea454c2023efb709a31ee9dbcde8de6..79764fa47dde40ed8aecf203a606e64409e3f895
在7284b1a6dea454c2023efb709a31ee9dbcde8de6
的历史中,79764fa47dde40ed8aecf203a606e64409e3f895
的提交早于origin
。
但是由于某种原因,它会将所有内容退还给用户,而不是将其限制在这两个SHA之间的提交范围内。
The docs建议将其限制在以下范围内:
仅显示指定修订范围内的提交。如果未指定
<revision range>
,则默认为HEAD(即导致当前提交的整个历史记录)。 origin..HEAD指定从当前提交(即HEAD)可访问的所有提交,但不是从origin可以访问的所有提交。有关拼写方式的完整列表,请参见gitrevisions [7]的“指定范围”部分。
更多here:
^ r1 r2设置操作经常出现,以至于它有一个简写形式。当您有两个提交r1和r2(根据上面的“指定版本”中所述的语法命名)时,可以要求从r2可以到达的提交(不包括从r1到^ r1 r2可以到达的提交),可以将其写为r1。 .r2。
我在做什么错?如何防止在79764fa47dde40ed8aecf203a606e64409e3f8
和HEAD
之间发生的列表合并?
[编辑]
为清楚起见,历史看起来像这样...
o HEAD
|
o
|
o 79764fa47dde40ed8aecf203a606e64409e3f895
|
o
|
o
|
o
|
o
|
o 7284b1a6dea454c2023efb709a31ee9dbcde8de6
|
答案 0 :(得分:3)
我正在尝试检查两次提交之间哪些分支合并到了原点中[...]我在做什么错?
您要指定origin
作为提示。您使用7284b1a6..79764fa4
指定了您真正想要的范围的基数和范围,(解析为这两次提交的所有拼写都可以),git log
不需要查找远程URL,因此不会在此处检查远程名称,它只是解析所有内容以提交ID。
答案 1 :(得分:0)
除了已经包含的选项外,还尝试使用选项“ --graph
”
git log --graph --merges --first-parent --oneline origin 7284b1a6dea454c2023efb709a31ee9dbcde8de6..79764fa47dde40ed8aecf203a606e64409e3f895
(编辑:实际上,对于--first-parent,它不应显示更多信息)。
首先,这取决于您的HEAD当前所在的位置。您的日志返回到HEAD的事实可能是偶然的。 HEAD实际上指向您用git checkout
签出的最后一件事。
此外,git log a..b
(实际上是log
或任何其他命令)返回“从 b 可以访问并且不可可以访问的所有内容来自 a »。这意味着,如果您的历史记录如下所示:
o o b
| |
a o o
| |
o o
| |
o o
| |
o o
| |
o o
| |
o o
\ /
\ /
o
|
o
|
o
|
o
然后git log a..b
实际上将为您提供合并点之后右侧分支上的全部7个提交。按时间顺序排列的时间戳记在这里无关紧要,起初并不能强行清除,因为没有任何选择,日志将把提交集显示为平面列表。