为什么相同的git脚本产生不同的哈希?

时间:2013-05-28 20:34:06

标签: git hash

我正在编写一个脚本作为Git用法的一个例子。但是,每次运行它时,即使提交消息,作者,日期,父级和内容相同,也会生成一组不同的哈希值:

rm -rf /tmp/git-teste
git init /tmp/git-teste
cd /tmp/git-teste
echo 'zero' > master.txt
git add .
git commit -am zero --date '2013-05-28 16:40:00' --author 'andre <teste@teste.com>'

哈希不应该总是一样吗?我应该改变什么以确保这种情况发生?

3 个答案:

答案 0 :(得分:6)

Git提交有两个日期:您使用commit --date设置的作者日期和提交日期。两者都用于计算SHA1。可以使用GIT_COMMITTER_DATE环境变量设置提交日期,请参阅git help commit-tree

答案 1 :(得分:2)

larsmans关于提交日期不同是正确的。试试这最后一行:

GIT_AUTHOR_DATE='2013-05-28 16:40:00' GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE git commit -am zero --author 'andre <teste@teste.com>'

答案 2 :(得分:2)

即使您设置author,也会自动设置committer字段。

请注意,您可以通过手动查看对象树,查找其他对象以及使用git cat-file -p A1234来查找差异,其中A1234是哈希的前5个字符(或者许多人保证唯一性)

例如,我发现了以下内容:

tree 552ae24725bacabda77c585b56b260ccac74c003
author andre <teste@teste.com> 1369784400 -0700
committer Username <username@email.com> 1369773739 -0700

zero