2016-06-29 9 views
-1

gitはファイルのメタデータを追跡しないため、ファイルメタデータはファイルのSHA-1ハッシュの一部ではありません。これは、ファイルのSHA-1ハッシュの一部でなければならないようですか?Gitのメタデータ部分がSHA-1ハッシュでないのはなぜですか?

ファイル名やそのファイルのその他のメタデータが変更された場合、ファイルのハッシュが変更されないのはなぜですか?

答えて

2

gitの中のファイルが二つの部分

  1. その内容
  2. のBLOBファイルツリーのディレクトリエントリによって表されるファイル名などの

物事がツリーに格納されています。

ファイルの名前を変更してコミットすると、同じ内容のBLOBを指し示す新しいツリーが表示されます。

逆に、同じ内容の複数のファイルを同じBLOBを指すようにすることができます。

+0

ファイル名を変更してもSHA-1ハッシュが変更されず、ファイルが別のものとして表示されるのはなぜですか?私は 'git mv'で名前が変更されたと言わない限り、Gitは何の違いも見られません。 –

+0

あなたは何を意味するのか分かりません。ファイル名を変更してもファイルの内容は変更されないため、SHA-1のハッシュ値は変更されません。また、リネーム操作をインデックスに追加せずにファイル名を変更すると(これは 'git mv'と同じですが、それ以外の方法もあります)、gitは"新しい "ファイルを追跡したい「古い」ファイルの追跡を停止する)。 – Thilo

+0

SHA-1ハッシュはファイル名に基づいていないので、ファイルの内容だけです。 –