为什么同一个git脚本会产生不同的哈希值?

为什么同一个git脚本会产生不同的哈希值?,git,hash,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

我正在编写一个脚本作为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>'
rm-rf/tmp/git测试仪
git init/tmp/git teste
cd/tmp/git测试
echo'zero'>master.txt
git添加。
git提交-上午0点--日期'2013-05-28 16:40:00'--作者'andre'

散列不应该总是一样的吗?我应该做些什么来保证这一点呢?

Git提交有两个日期:一个是作者日期,您用
commit--date
设置,另一个是提交日期。两者都用于计算SHA1。可以使用
GIT\u COMMITTER\u date
环境变量设置提交日期,请参阅
GIT help commit tree

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>'
GIT_AUTHOR_DATE='2013-05-28 16:40:00'GIT_COMMITTER_DATE=$GIT_AUTHOR_DATE GIT commit-am zero--作者安德烈'

即使设置了
作者
也会自动设置一个
提交者
字段

请注意,您可以通过手动查看对象树,查找不同的对象,并使用
git cat file-p A1234
找出差异,其中
A1234
是散列的前5个字符(或保证唯一性的任意多个字符)

例如,我发现:

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

zero
树552ae24725bacabda77c585b56b260ccac74c003
作者安德烈1369784400-0700
提交人用户名13697739-0700
零

是否先删除
/tmp/git teste
--date
覆盖作者日期。您在每次提交时都有不同的提交人日期。