混乱:同一分支上的两次提交,但不在彼此的历史记录中

问题描述 投票:0回答:1

对于提交哈希值AB,我有点困惑。我希望它们成为 master 分支的一部分。提交 A 的提交日期比提交 B 晚几个小时,但是当我运行

git log --pretty=fuller A
时,我在历史记录中看不到 B(我滚动过去,提交日期早于 B 的提交)的)。为了进行完整性检查,我运行了
git log --pretty=fuller B
,但在其日志历史记录中没有看到提交 A

我使用

--pretty=fuller
标志,因为提交似乎是按提交数据排序的,而不是按作者日期排序,所以我认为这将是比较它们在历史中的位置的更好方法。

此时我认为其中一个提交必须位于不同的分支上,所以我运行:

git merge-base master A
这返回了A
git merge-base master B
这返回了B

所以对我来说,这意味着它们都在

master
上,这意味着其中一个应该属于另一个的日志中。 [结论1]
在这个阶段,我认为我可能缺少一个标志来记录日志中的所有提交,所以我想我应该运行另一个命令作为现实检查:

git merge-base A B
这又返回了另一个提交(我们称之为C)!

现在这对我来说意味着一个不是另一个的祖先,这似乎与结论1

相矛盾

有人可以指出我的推理哪里错误吗?我现在正忙于提交日志,这真的让我难住了。谢谢。

git git-commit git-log
1个回答
0
投票

正如

Jeff Bowman
在评论中指出的那样,我的结论1是错误的。

相关问题是在合并的情况下。

我误解了合并时分支会发生什么:我假设当一个分支合并到 master 中时,该分支“不是” master 日志历史记录的一部分 - 只有合并提交才会显示。 事实并非如此 最后,提交

A

位于已与master合并的分支上,而提交B发生在初始分支之后,但在合并提交之前。 由于我希望能够仅搜索主 master 分支而不查看功能分支,因此似乎使用标志

git log --first-parent

有助于做到这一点。

    

© www.soinside.com 2019 - 2024. All rights reserved.