【问题标题】:Get git SHA1 hash of a changeset (or diff) in a commit在提交中获取变更集(或差异)的 git SHA1 哈希
【发布时间】:2011-05-22 11:25:05
【问题描述】:

我主要将已完成的主题分支集成到 git 中的主要开发分支中。在这样做时,我有时必须更改提交的消息(改进、纠正拼写,...),这会导致使用新的 SHA1 ID 进行新的提交。

我想获取 提交中的更改SHA1 哈希。这将让我们在修改提交消息后验证变更集的任何内容是否被更改。

如果我们也能获得 提交序列 的变更集的 SHA1 哈希,那就太好了。然后我们将能够进行交互式变基,在此我们压缩提交并仍然以更改集的相同 SHA1 哈希结束。

【问题讨论】:

  • 你为什么需要这个?你不相信 git 会按照你说的去做吗?
  • 我确实相信 git,但其他人(包括我)正在更改提交(通常只有提交消息),但我们需要证明更改集没有被更改。

标签: git diff changeset sha1


【解决方案1】:

当 git 需要判断是否已经应用了补丁时,例如对于git cherry,它使用git-patch-id 来创建该提交引入的补丁的哈希值。也许这适合你想做的事?或者git cherry 已经做了你想要的?这些命令的文档是:

【讨论】:

    【解决方案2】:

    您可以获取特定提交点使用的树的 SHA1 哈希

    git show -s --pretty=format:%T master
    

    其中master 是任何提交规范。

    请注意,git 不会跟踪变更集,它会跟踪整个存储库,因此此树 id 表示该提交之后整个存储库的 状态,而不是该提交添加的更改。

    【讨论】:

    • 可能 是 OP 需要的 - 如果提交元数据已被更改,树肯定是相同的,并且 OP 将能够检测到“安全更改” " 根据需要提交。但是,如果人们正在重新提交提交,以便差异相同但它们被应用到其他地方,那么树就会改变......
    • 好主意。只要分支没有变基,这就会很好地工作。 (不幸的是)变基是我们工作流程的一部分。
    猜你喜欢
    • 2012-02-06
    • 2014-10-29
    • 2013-12-26
    • 2021-06-13
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多