2011-05-22 92 views
3

我主要将完成的主题分支集成到git的主开发分支中。虽然这样做,我有时必须更改提交(改进,更正拼写,......)的消息,这会导致带有新的SHA1 ID的新提交。在提交中获取变更集(或差异)的git SHA1哈希

我想获得SHA1哈希更改提交。这可以让我们在验证提交消息后验证更改集的任何内容是否被更改。

如果我们也可以获得提交序列的变更集的SHA1哈希值,那将是非常好的。然后,我们可以在我们压缩提交的地方进行交互式资源重组,并且仍然以变更集的相同SHA1哈希值结束。

+0

为什么你甚至需要这个?难道你不相信它会按照你所说的去做吗? – svick 2011-05-22 11:51:50

+0

我确实相信git,但其他人(包括我)正在改变提交(通常只提交消息),但我们需要证明更改集没有被更改。 – 2011-05-22 12:08:53

回答

1

你可以得到一定的树的SHA1哈希提交点使用

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

其中master任何承诺规范。

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

+0

这可能是OP所需要的 - 如果提交元数据已被更改,树肯定是相同的,并且OP将能够根据需要检测“安全地更改”提交。然而,如果人们正在重新定义提交,所以差异是相同的,但他们应用在其他地方,树木会改变... – Cascabel 2011-05-22 13:01:39

+0

好主意。只要分支没有重新分配,这个效果就很好。 (不幸的是)rebasing是我们工作流程的一部分。 – 2011-05-30 13:51:10

2

当git需要判断补丁是否已经被应用时,对于git cherry,它使用git-patch-id创建该提交引入的修补程序的散列。也许这会适合你想要做的事情?或者也许git cherry已经做到了你想要的?这些命令的文档是:

+0

这个工作得很好,在做交互式底版时也是如此。 – 2011-05-30 13:52:40