🤹

Gitをきちんと理解する。(基本)

2024/11/06に公開

1. スナップショットと差分の説明

2. 用語の確認
  • リポジトリ: スナップショットを記録する場所
  • ローカルリポジトリ: 自分のパソコン内にあるリポジトリで、変更履歴を保存するデータベース
  • リモートリポジトリ: ネット上にあるリポジトリで、チームで共有するためのデータベース
  • ワークツリー: 作業中のディレクトリ
  • ステージ: コミットする変更を準備する場所。
    git addで変更をステージに追加します。ここでは差分(変更部分のみ)が一時保存されます。

3. git addの説明

git addを使うと、ステージにファイル内容を基にしたハッシュIDがついた圧縮ファイル(blob)が作成され、次のコミットの準備が整います。

4. git commit の説明

git commitを行うと、現在のスナップショット(圧縮ファイル)とともに、以下の情報がリポジトリに保存される。

  1. blob(ブロブ)オブジェクト:ファイルの圧縮データ
  2. ツリー:ファイルやディレクトリ構造
  3. コミット情報:コミットした人の名前、アドレス、日付、メッセージ、親コミット情報

ステージとリポジトリそれぞれに圧縮ファイルを保存する理由

ステージとリポジトリそれぞれに圧縮ファイルを保存することで、ファイルの変更を選択的にコミットできるため。
(例:Aさんが「顧客ページ」と「商品ページ」を変更している場合、他の開発者が「カート機能」を作成したいので「商品ページ」だけを先に統合したいとき、Aさんはステージの変更を分けてジャンルページだけ先にコミットできる。)

Gitのデータ構造まとめ

  • リポジトリには「圧縮ファイル」「ツリー」「コミット」のデータが保存される
  • コミットには親コミット情報があり、これを使って変更履歴を辿ることができる
  • Gitはデータを圧縮してスナップショットで保存する仕組みをとっている

Discussion