获取提交中更改集(或差异)的git SHA1哈希值

3
我主要在git中将已完成的主题分支集成到主开发分支中。在这个过程中,有时需要更改提交信息(如改进、纠正拼写等),这会导致新的提交和新的SHA1 ID。
我想获取提交更改内容的SHA1哈希值。这将让我们验证在修改提交消息后,是否更改了任何更改集的内容。
如果能够获取一系列提交的更改集的SHA1哈希值,那就太好了。然后我们就可以进行交互式变基,压缩提交,并最终得到相同的更改集SHA1哈希值。

你为什么需要这个?难道你不相信 Git 会按照你的要求执行吗? - svick
我确信 Git,但其他人(包括我)会更改提交记录(通常仅限于提交消息),但我们需要证明变更集未被更改。 - Paul Pladijs
2个回答

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

1

您可以使用以下方法获取特定提交点的树形SHA1哈希值:

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

其中master是任何提交规范。

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


可能 是 OP 所需的内容 - 如果提交元数据已被更改,树将肯定相同,OP 将能够按需检测“安全更改”的提交。然而,如果人们正在重置提交,以便差异相同但应用在其他地方,那么树将会改变... - Cascabel
好主意。只要分支没有被变基,这个方法就很有效。(不幸的是)变基是我们工作流程的一部分。 - Paul Pladijs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接