Gitがどのようにしてバージョン管理をしているのか理解するため、
addとcommitコマンドそれぞれを実行した際に、
リポジトリ内部で行われていること確認していく。
目次
addコマンド実行時の挙動
commitコマンド実行時の挙動
まとめ
addコマンド実行時の挙動
git addコマンドを実行すると、
まずリポジトリにaddで指定したファイルの圧縮ファイル1が保存される(図①)。
圧縮ファイルはblobオブジェクトと呼ばれている。
それにハッシュ関数SHA12によってファイル名3が付けられる。
次にステージエリアにあるインデックス4に、
圧縮ファイルとその元ファイルのマッピング情報を記載する(図②)。
・概要図
commitコマンド実行時の挙動
git commitコマンドを実行すると、
まずリポジトリにtreeオブジェクトが作成される(図③)。
名前はハッシュ関数によって付けられる。
内容はインデックスを複製したもの。
次にリポジトリにcommitオブジェクトが作成される(図④)。
名前はハッシュ関数によって付けられる。
内容は以下
・treeオブジェクトのファイル名
・親commit情報
・commit作成者名, アドレス
・commit日時
・commitメッセージ
・概要図
まとめ
Gitではコミットを実行すると、
リポジトリ内に次の3つのオブジェクト5が生成される。
blobオブジェクトはコミットしたデータ本体を圧縮ファイルとして保存し、
treeオブジェクトはファイルシステムの様にファイル(ディレクトリ)構成を管理し、
commitオブジェクトはコミット情報を管理している。
それらによってGitはバージョン管理をしている。