我正在编写一个脚本作为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>'
哈希不应该总是一样吗?我应该改变什么以确保这种情况发生?
答案 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