Merkle_Tree Git

  • Gitオブジェクトの種類
    • Blob
      • ファイルデータ
    • Tree
      • 1つのディレクトリ内のすべてのファイルについて,Blob ID, パス名, メタデータを記録
      • 下位ディレクトリへの参照
    • Commit
      • 作者・コミット日・コミットメッセージなど
      • コミット時点でのリポジトリの状態を指すMerkle Treeのルートハッシュ
    • Tag
  • GitのすべてのファイルはBlobとして保存されている
    • 同じハッシュ値を持つ(=同じデータの)Blobは存在しない(させない)
  • 各コミットオブジェクトは以下のポインタを持つ
    • 前のコミットを指すポインタ
    • Merkle Treeのルートハッシュ
  • Pull/Pushのとき,ハッシュ値を比較して違うとこだけ転送する