【问题标题】:Why are two text files with same content showing with different SHA hash in git?为什么两个内容相同的文本文件在 git 中显示为不同的 SHA 哈希值?
【发布时间】:2023-01-25 00:17:09
【问题描述】:

我在 git 上提交了两个具有相同内容(“hello”)的文件(note1a.txt 和 note1b.txt)。鉴于内容相同,我希望 SHA-1 哈希值相同。但是他们有不同的哈希值(见下图)。为什么是这样?

我正在使用 Android Studio GUI。

【问题讨论】:

  • 原因可能有很多,但归根结底都是“内容不一样”。检查 hexdump(可能使用 IntelliJ 插件)以查看差异。第一个散列是我对末尾没有换行符的普通旧 ASCII 文件的期望。
  • Git SHA-1 不仅包括提交文件的内容,还包括更多信息,如提交者姓名和提交日期。请参阅stackoverflow.com/a/68806436/14967413(“获取提交哈希”标题)。
  • @user14967413:那些不是提交哈希,而是对象 ID(也在您发布的链接中描述)。它们只是文件的内容(和一个固定的前缀)。 IE。如果这两个值不同,则内容的文件不同。
  • 它们是 git 对象 ID。它们不是 Android Studio 发明的任何东西。他们只是不是 git提交 ID. git 中有不止一种类型的哈希/id。而 Android Studio 展示的不止一个。尝试运行echo -n hello > hello.txt ; git hash-object hello.txt,您会看到输出包含第一个散列作为前缀。我有点惊讶我必须向您解释这种差异,因为您提供的链接中对此进行了准确解释。
  • 据我所知,它们确实是对象 ID。我可以重现第一个。我仍然相信第二个文件实际上有不同的内容(不可见的控制字符,看起来像它们的 ascii 等效字符,......)。使用十六进制查看器/编辑器检查以验证内容的不同之处。

标签: git sha


【解决方案1】:

所以图像中的哈希实际上是提交哈希而不是对象哈希。这两个 txt 文件是分别提交的,因此哈希值不同。哦...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    相关资源
    最近更新 更多