カテゴリー
未分類

gitのコミットが持っている情報

gitのコミットは以下の情報を持っている。

コミット =

  • 親コミットへのポインタ
  • 著作者・著作日時
  • コミッター・コミット日時
  • コミットメッセージ
  • コミット時点の内容へのポインタ(内容そのものは別のところにある)

どういう風に?というと、

git cat-file コマンドで実物を見ることができる。

e8e6d64eb083b3086e8ea45ec70e02915a514b68 というコミットがあるとすると、以下のように確認できる。

$ git cat-file -p e8e6d64eb083b3086e8ea45ec70e02915a514b68
tree 641652e56a0ac28f314d83c227e446f0394cef05
parent 1cc1a476468d8106ef2954f959dc7b747159a353
author xxxx著作者xxxx 1585804211 +0200
committer xxxxコミッターxxxx 1585804211 +0300

元になっているデータはどこにあるのかというと、

.git/objects ディレクトリの中を探すと、

(圧縮されていなければ)e8/e6d64eb083b3086e8ea45ec70e02915a514b68 というファイルがある。

圧縮されているので、コマンド経由で展開すると中身が見える。

tree 641652e56a0ac28f314d83c227e446f0394cef05
↑コミット時点のツリーへのポインタ

parent 1cc1a476468d8106ef2954f959dc7b747159a353
↑親コミットへのポインタ

なども、ファイルが存在して情報をたどっていくことができる。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です