还原先前的提交后,是否有git提交相同的哈希?

时间:2014-09-10 11:43:32

标签: git hash git-revert

在进入同一状态后,git历史记录中是否有相同的哈希提交?例如,在还原后?

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

让我们假设历史

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

我知道问题Can you get a duplicate hash in Git in any way and what are the implications非常相似,但它没有回答我的问题。

1 个答案:

答案 0 :(得分:1)

是的,如果你还原提交,它将有一个新的哈希。

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


在相关的说明中,git中的每个对象都获得一个哈希值;提交,树(目录),blob(文件)和标签。通过还原提交3创建的将具有<树>提交1指向的相同哈希,因为树仅依赖于其内容。他们没有跟踪他们的历史。这只能通过指向树的提交来完成。您可以通过

找到特定提交的树形哈希
$ git cat-file -p <commit-hash>