treeオブジェクト
一つ一つのディレクトリに対応
$ git commitしたときに作成される
treeオブジェクト同士は独立に存在しているように見える
「Aからhogeを追加してBになった」のような関係は情報として持っていない
commitオブジェクトが管理している
中身
code:tree_object
100644 aaa.txt \0 72943a16fb2c8f38f9dde202b7a70ccc19c52f34
100644 bbb.txt \0 f761ec192d9f0dca3329044b96ebdb12839dbff6
100644 ccc.txt \0 b2a7546679fdf79ca0eb7bfbee1e1bb342487380
40000 ddd \0 0d546c66a969f7b205bf2fd450ef5e4b9efb70bf
100755 eee.sh \0 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
120000 fff-symlink \0 35a6b12323dd0e2f9a2a3e5abe291920151ede4a
先頭の数字
ファイルの種類
40:ディレクトリ
100:ファイル
120:シンボリックリンク
160:サブモジュール
実行可能ファイルかどうか
644 実行不可
755 実行可
e.g. 100644
次の部分
そのディレクトリ内の、ファイル名もしくはサブディレクトリ名
e.g. aaa.txt
最後の部分
treeもしくはblobのオブジェクトのID
e.g. 72943a16fb2c8f38f9dde202b7a70ccc19c52f34
ディレクトリはtree構造になっている
子が変更されると親も変更させる
故にどの子が変更されてもルートtreeは毎回変更される
故にルートtreeのIDは、ツリー全体を一意に識別するIDとなっている
http://cdn-ak.f.st-hatena.com/images/fotolife/k/koseki2/20140420/20140420185211.png http://koseki.hatenablog.com/entry/2014/04/22/inside-git-1#2
プロジェクト内に100個のディレクトリがあるとき
100個のtreeオブジェクトが存在する?
ディレクトリ同士は包含関係になっているので、treeオブジェクトも包含関係になっている?
参考
詳しい。イラストがわかりやすい