git 相同哈希值的提交如何具有不同的历史记录?

6l7fqoea  于 2023-09-29  发布在  Git
关注(0)|答案(1)|浏览(131)

编辑:最初我有Azure Devops的屏幕截图显示历史。由于分辨率非常差,我用git log...的文本输出替换了它。
我有一个git repo,就叫它sub吧。我用www.example.com标记了提交75accac4v7.1.2023.227:History of main分支with changes from PR 79

$ git log v7.1.2023.227 --pretty=format:"%h %ad %d"
75accac Tue Aug 15 07:31:15 2023 +0000  (HEAD, tag: v7.1.2023.227)
0406c95 Thu May 25 10:57:32 2023 +0200
e535e85 Mon Aug 14 07:57:40 2023 +0000
[...]

然后,我从另一个repo super中引用了该标记,该repo将sub作为子模块。只是为了发现在PR 79中所做的更改丢失了。检查了在中间提交0406c956中发生的事情,更改没有在那里删除。
所以我进一步调查了一下,发现当显示标签的历史记录时,PR 79的提交完全丢失了:PR 79的标签历史记录缺失

$ git log origin/main --pretty=format:"%h %ad %d"
6c9a0d3 Tue Aug 15 07:38:29 2023 +0000  (origin/main)
75accac Tue Aug 15 07:31:15 2023 +0000  (tag: v7.1.2023.227)
0406c95 Thu May 25 10:57:32 2023 +0200
08f73ff Mon Aug 14 08:37:18 2023 +0000
14232e7 Mon Aug 14 08:35:17 2023 +0000
ce979ae Mon Aug 14 08:34:23 2023 +0000
04bd5ff Mon Aug 14 08:29:52 2023 +0000
e535e85 Mon Aug 14 07:57:40 2023 +0000
[...]

这怎么可能?两个来自同一个提交(e535e85)的git-history,后来又发生了分歧,怎么会有相同的head提交哈希(75accac)呢?
我开始怀疑我对git和哈希树的理解。提前感谢您的输入!
丹诺

avwztpqn

avwztpqn1#

在你发布的第一张图上,你会注意到“合并PR 79”似乎是一个“错误方向”的合并:图中的边从左到右。
这种显示可能会误导您,使您认为这个特定的合并是标记版本的一部分,但实际上不是。
这些变化似乎在之后合并到main中,PR为85。
ps:对于堆栈溢出发布目的,最好是发布 * 文本 * 而不是图像。
你可以通过运行git log --oneline --graph得到一个很好的git图视图,输出的是文本,你可以很容易地复制和粘贴。

相关问题