2017-06-30 3 views
0

内容は同じですが、名前と場所が異なるファイルに同じSHA-1を割り当てるのはなぜですか?gitは名前と場所が異なるファイルに同じハッシュを割り当てるのはなぜですか?

100644 43efcd84207788e5289ee23a9ce95d9f43b13d9a 0 dir1/dir1_d2/dir1_d2_f1.txt 100644 43efcd84207788e5289ee23a9ce95d9f43b13d9a 0 test.txt

表示するファイルの内容は:

$ git cat-file -p 43efcd84207788e5289ee23a9ce95d9f43b13d9a Line 1

おかげ

+2

Gitはファイル名ではなく内容を追跡します。 – MrTux

+0

https://git-scm.com/book/en/v2/Git-Internals-Git-Objects –

答えて

4

内容は同じですので!

GitはBLOBオブジェクト内のコンテンツを追跡します。
パスはgitによってツリーオブジェクトで解決されます。

Pro Git - Git Internals - Git Objectsを読むと、gitストアデータの仕組みを知ることができます。

+0

gitは、__Each__ファイルの内容をキャッシュ/ステージング領域の__Each__ファイルと比較します。マッチすると、新しいエントリが追加されます元のファイルと同じハッシュ(同じオブジェクトへの参照)を持つインデックスと、それに対応する名前を新しく追跡されたファイルのインデックスに挿入しますか? – appu

+0

いいえ、新しいオブジェクトを格納するためにはgitを単純にハッシュし、ハッシュがすでに存在する場合はオブジェクトが既に格納されています。それ以外の場合は格納する新しいオブジェクトです。 – zigarn

関連する問題