显然相同的提交给出不同的sha1,为什么?

bm8*_*842 13 git sha1 commit

在使用我的脚本从存储库重新编写子树历史后,我将其与git filter-branch ...在同一子树上执行的操作进行了比较.我看到初始提交有不同的sha1,虽然我期望它们是相同的(结果是这两个历史的所有提交都有不同的sha1).

git show --format=raw <commit-sha1>对两个提交执行a 会产生完全相同的输出(第一行除外,即commit <commit-sha1>引入结果).

对象文件完全不同,但由于它们是二进制文件,我无法找出根本原因.

假设所有git版本彼此一致,有什么可以解释为2个不同的sha1?

谢谢

Syl*_*sne 14

Git对提交哈希的输入包括元数据,例如树的SHA1,父的SHA1,提交者的名称,电子邮件和提交日期,以及作者的姓名,电子邮件和提交日期.所以当你重写历史时,提交者提交日期和树(因为你做了filter-branch)可能已经改变了,因此你的提交的SHA1有所不同.

有关提交格式的更多信息,您可以使用git cat-file commit <sha>或查找Git BookGit Objects部分.