【问题标题】:Does have a git commit same hash after reverting previous commit?恢复之前的提交后是否有 git commit 相同的哈希?
【发布时间】:2014-09-10 11:43:32
【问题描述】:

进入相同状态后是否有提交到 git 历史相同的哈希?比如revert之后?

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

让我们假设历史

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,但它没有回答我的问题。

【问题讨论】:

    标签: git hash git-revert


    【解决方案1】:

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

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


    在相关的注释中,git 中的每个对象都有一个哈希值;提交、树(目录)、blob(文件)和标签。您通过还原提交 3 创建的 tree 将具有与提交 1 指向的树相同的 same 哈希,因为树仅依赖于它们的内容。他们不追踪他们的历史。这仅由指向树的提交完成。您可以通过

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

    【讨论】:

      猜你喜欢
      • 2010-12-26
      • 2014-10-29
      • 2013-04-28
      • 2015-12-04
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 2021-02-02
      • 2017-09-09
      相关资源
      最近更新 更多