🤹
Gitをきちんと理解する。(基本)
1. スナップショットと差分の説明
2. 用語の確認
- リポジトリ: スナップショットを記録する場所
- ローカルリポジトリ: 自分のパソコン内にあるリポジトリで、変更履歴を保存するデータベース
- リモートリポジトリ: ネット上にあるリポジトリで、チームで共有するためのデータベース
- ワークツリー: 作業中のディレクトリ
- ステージ: コミットする変更を準備する場所。
git add
で変更をステージに追加します。ここでは差分(変更部分のみ)が一時保存されます。
git add
の説明
3. git add
を使うと、ステージにファイル内容を基にしたハッシュIDがついた圧縮ファイル(blob)が作成され、次のコミットの準備が整います。
git commit
の説明
4. git commitを行うと、現在のスナップショット(圧縮ファイル)とともに、以下の情報がリポジトリに保存される。
- blob(ブロブ)オブジェクト:ファイルの圧縮データ
- ツリー:ファイルやディレクトリ構造
- コミット情報:コミットした人の名前、アドレス、日付、メッセージ、親コミット情報
ステージとリポジトリそれぞれに圧縮ファイルを保存する理由
ステージとリポジトリそれぞれに圧縮ファイルを保存することで、ファイルの変更を選択的にコミットできるため。
(例:Aさんが「顧客ページ」と「商品ページ」を変更している場合、他の開発者が「カート機能」を作成したいので「商品ページ」だけを先に統合したいとき、Aさんはステージの変更を分けてジャンルページだけ先にコミットできる。)
Gitのデータ構造まとめ
- リポジトリには「圧縮ファイル」「ツリー」「コミット」のデータが保存される
- コミットには親コミット情報があり、これを使って変更履歴を辿ることができる
- Gitはデータを圧縮してスナップショットで保存する仕組みをとっている
Discussion