首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-apply或git-am应该得到相同的散列吗?

git-apply或git-am应该得到相同的散列吗?
EN

Stack Overflow用户
提问于 2011-12-18 15:17:26
回答 1查看 2.4K关注 0票数 4

我想我漏掉了什么。我的印象是,git使用SHA-1散列提交标识符意味着可以确定从其他人那里获得的该提交的补丁没有被更改。

我在我的机器上做了这个测试(很明显,名字和电子邮件地址都改了):

代码语言:javascript
复制
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>

正如您所看到的,最后两次提交的散列是不同的,这两次提交是由补丁创建的。现在,也许这是有道理的。当然,补丁创建的文件的时间戳是不同的。(我不确定散列中包含哪组信息)

然而,如果是这样的话,我如何验证我刚刚应用的补丁包含完全相同的代码?我怎么知道给我发补丁文件的人没有做恶意的更改呢?

或者我犯了一个错误,导致了不同的散列,如果我做得正确,我会得到相同的散列?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-18 15:20:53

默认情况下,git am将组委会日期设置为当前时间。您可以使用--committer-date-is-author-date标志来避免这种情况,尽管它仍然可能将您设置为提交者(实际上,它可能会这样做)。您可以使用git log --format=fuller来验证这一点,它也会显示委员会信息。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8550400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档