我想我错过了什么。我的印象是git使用SHA-1哈希提交标识符意味着可以确定从其他人处获得的修补程序没有被更改。
我在我的机器上进行了这项测试(显然名称和电子邮件已更改):
cd dogcatcher
dogcatcher> git log
commit 926f347567a9da6f7692aca0e23d13f094d9e3a6
Author: Joe User <joe@test.com>
Date: Sat Dec 17 15:28:55 2011 -0600
3rd branch commit
commit 11e8055aa5e8f0d323c48b4f691adced7a8a9762
Author: Joe User <joe@test.com>
Date: Sat Dec 17 15:10:44 2011 -0600
second branch commit
commit 23deb7093a8565479092ef84142a0e2e7282d213
Author: Joe User <joe@test.com>
dogcatcher> git format-patch 23de (format a patch containing everything since 23de)
dogcatcher> cd ..
~> cp -r dogcatcher catcatcher
cd catcatcher
catcatcher> git reset --hard 23de (reset HEAD to 23de)
catcatcher> git am 00* (apply the two patch files)
catcatcher> git log
commit 2548980811d1875971ce1a018df98374950e0059
Author: Joe User <joe@test.com>
Date: Sat Dec 17 15:28:55 2011 -0600
3rd branch commit
commit 7d651d05344ba6e2cd18d8e24c0c350d0c7dec66
Author: Joe User <joe@test.com>
Date: Sat Dec 17 15:10:44 2011 -0600
second branch commit
commit 23deb7093a8565479092ef84142a0e2e7282d213
Author: Joe User <joe@test.com>
正如您所看到的,最后两次提交中的哈希值是不同的,这些提交是由修补程序创建的。现在,也许这是有道理的。当然,补丁创建的文件的时间戳也不同。 (我不确定哈希中包含哪些信息集)
但是,如果是这种情况,我如何验证我刚刚应用的补丁包含完全相同的代码?我如何知道向我发送补丁文件的人没有进行恶意更改?
或者我犯了一个导致不同哈希的错误,如果我做得正确,我会用相同的哈希出来吗?