2011-05-22 53 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