编辑:最初我有Azure Devops的屏幕截图显示历史。由于分辨率非常差,我用git log...
的文本输出替换了它。
我有一个git repo,就叫它sub
吧。我用www.example.com标记了提交75accac4
v7.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和哈希树的理解。提前感谢您的输入!
丹诺
1条答案
按热度按时间avwztpqn1#
在你发布的第一张图上,你会注意到“合并PR 79”似乎是一个“错误方向”的合并:图中的边从左到右。
这种显示可能会误导您,使您认为这个特定的合并是标记版本的一部分,但实际上不是。
这些变化似乎在之后合并到
main
中,PR为85。ps:对于堆栈溢出发布目的,最好是发布 * 文本 * 而不是图像。
你可以通过运行
git log --oneline --graph
得到一个很好的git图视图,输出的是文本,你可以很容易地复制和粘贴。