为什么 GIT 为同一个二进制文件(图像)生成的 SHA1 与其他工具生成的 SHA1 不同?

Why SHA1 generated by GIT for same binary file (image) differs from SHA1 by other tools?

嗨,

出于好奇,我测试了 GIT 为图像文件 "tech01.jpg" 生成的 SHA1,但是 GIT 生成的 SHA1 与其他工具生成的 SHA1 不同。

据我了解,无论系统如何,相同文件、二进制内容或相同文本的 SHA1 应该相同。

那么,为什么 GIT 生成的 SHA1 与其他工具生成的不同。 GIT 是否使用不同的加密算法或任何其他修改 file/text 的方式,或者可能只是我在理解 SHA1 的 GIT 用法时遗漏了一些东西。

这是我得到的:

我目前正在通过 Bash 使用 git 版本 2.13.0.windows.1(如果重要的话,MingWWindows 7 64 位机器。

测试图像文件。

Git 没有计算文件的 SHA-1。每个 git object,包括存储在 git 中的每个文件,都有一个 header,其中包含有关 object 的信息,包括 object 的类型(在本例中,一个文件是 "blob" object) 和 object.

的大小

您可以通过 运行:

计算文件的 Git object ID
git hash-object tech02.jpg

这将计算 header 后跟文件内容的 SHA-1。