以下の記事でgit add
コマンド実行後 「.git」内でどのような変化があるかを調べました。
(Hello world と記入した test.txt をステージに追加)
【Git】.git の仕組みや変化を調べてみた ①(git init から git add まで実行) - まるノート
git commit を実行
続けてgit commit
コマンド実行により、どのような変化が起こるか調べてみます。
実行前の「.git / objects」は以下の状態です。
実行します。
$ git commit -m "first commit" [master (root-commit) d6e1f7e] first commit 1 file changed, 1 insertion(+) create mode 100644 test.txt
すると「objects」配下に2つのフォルダが生成されました。
「40」フォルダ内は以下のファイルが存在しています。
同様に「d6」フォルダ内は以下の通りです。
tree オブジェクト
まずは「40」フォルダの内容をgit cat-file -p
コマンドで確認してみます。
$ git cat-file -p 401ce7dbd55d28ea49c1c2f1c1439eb7d2b92427 100644 blob 802992c4220de19a90767f3000a79a31b98d0df7 test.txt
実行結果が表す内容は以下の通りです。
- 100644・・・アクセス権限
- blob・・・ファイルの種類
- 802992c4220de19a90767f3000a79a31b98d0df7・・・オブジェクトID
- test.txt・・・ファイルのパス
git add
を実行した後の「Index」とよく似ていおり、
ステージに追加した test.txt のハッシュ値である
「802992c4220de19a90767f3000a79a31b98d0df7」を指している点は共通です。
これはtreeオブジェクト と呼ばれるものになります。
これだけではさっぱりわからないと思いますが、ひとまず置いといて、
もう一つ生成されたフォルダを見てみます。
commit オブジェクト
次に「d6」フォルダの内容を同じくgit cat-file -p
コマンドで確認してみます。
$ git cat-file -p d6e1f7eb272690a4e0f0eaa1de2fd92c6f11c1e7 tree 401ce7dbd55d28ea49c1c2f1c1439eb7d2b92427 author Hogetaro <Hogetaro@yahoo.co.jp> 1653910407 +0900 committer Hogetaro <Hogetaro@yahoo.co.jp> 1653910407 +0900 first commit
「tree 401ce7dbd55d28ea49c1c2f1c1439eb7d2b92427」の部分は、 同じタイミングで生成されたtreeオブジェクトを指しています。
こちらはcommitオブジェクトと呼ばれるものになります。
git commit
を実行することでtreeオブジェクトとcommitオブジェクトという2種類のファイル・フォルダが生成される。ということが確認できました。
内容について詳しく触れておらず、この段階では不明な点が多々あるかと思いますが、また次回の記事で解説しようと思います。ここまで読んで頂きありがとうございます。