簡體   English   中英

為什么 Git 只對文件的內容進行哈希處理?

[英]Why does Git hash only the Contents of A File?

這篇文章中,計算了 Git 中文件的哈希值

    Commit Hash (SHA1) = SHA1("blob " + <size_of_file> + "\0" + <contents_of_file>)

我自己測試了兩個空文件,以檢查它是否正確:

    100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       empty1.txt
    100644 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 0       empty2.txt

但是為什么 Git 會從哈希中排除文件名呢? 怎么區分empty1.txt和empty2.txt?

如果我將 empty1.txt 的名稱更改為 empty2.txt,當我調用 git status 時,Git 如何跟蹤該更改?

但是為什么 Git 會從哈希中排除文件名呢? 怎么區分empty1.txt和empty2.txt?

因為 Git 管理內容(如果兩個文件的內容相同,它們的 SHA1 也會相同)。

文件(目錄內容)管理,它列出了給定文件夾中的文件。

https://git-scm.com/book/en/v2/images/data-model-2.png

$ git cat-file -p 3c4e9cd789d88d8d89c1073707c3585e41b0e614
040000 tree d8329fc1cc938780ffdd9f94e0d364e0ea74f579      bak
100644 blob fa49b077972391ad58037050f2a75f74e3671e92      new.txt
100644 blob 1f7a7a472abf3dd9643fd615f6da379c4acb3e3a      test.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM