恢复之前的提交后,git 提交是否具有相同的哈希值?

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

进入相同状态后,git 历史记录中的提交是否具有相同的哈希值?例如恢复后?

一个哈希有可能有多个提交吗?

让我们假设历史

commit number 1: hash 1111
commit number 2; hash 2222
commit number 3(revert of 2), hash 3333 or 1111?

我知道有一个非常相似的问题你能以任何方式在 Git 中获得重复的哈希值吗?这有什么影响,但它并没有回答我的问题。

git hash git-revert
1个回答
1
投票

是的,如果您恢复提交,它将有一个新的哈希值。

这是因为提交哈希依赖于作为祖先的任何提交,即可以通过连续跟随父提交来到达的任何提交。由于提交 3 和提交 1 具有不同的祖先(其中一个具有 2 作为祖先,另一个没有),因此它会获得一个新的哈希值。


相关说明,git 中的每个对象都有一个哈希值;提交、树(目录)、blob(文件)和标签。通过恢复提交 3 创建的 tree 将具有与树提交 1 指向的 same 哈希值,因为树仅依赖于其内容。他们不追踪自己的历史。这只能由指向树的提交来完成。您可以通过

找到特定提交的树哈希
$ git cat-file -p <commit-hash>
© www.soinside.com 2019 - 2024. All rights reserved.