リポジトリと commit の心象モデル — Git の世界観
学習目標
このレッスンを終えると、次のことができるようになります。
- リポジトリ・commit・ハッシュの 3 つの概念を比喩で説明できる
git initとgit cloneの違いを 1 行で言える- commit を「セーブポイント」として捉える心象モデルを持てる
まずは比喩で
Git は概念が多くてとっつきにくいが、TV ゲームのセーブデータの比喩で理解すると一気に楽になる。
| Git の用語 | TV ゲームでの対応物 |
|---|---|
| リポジトリ (repository) | ゲームのセーブデータが入っているメモリーカード全体 |
| commit (コミット) | セーブポイント。「ここで保存しておこう」と決めて作る |
| commit ハッシュ | 各セーブデータの管理番号 (a1b2c3d のような英数字) |
| HEAD | いま開いているセーブデータ |
| branch (ブランチ) | 「もしも分岐シナリオ」を試すためのセーブスロット |
セーブポイント (commit) は 後から好きな時点に戻せる。途中で間違えても安心。
リポジトリとは
リポジトリ (repository、略称 repo) = 1 つのプロジェクトのファイル群 + その変更履歴を全部まとめたフォルダ。
my-project/ ← これがリポジトリ
├── .git/ ← 履歴のすべてが入った隠しフォルダ (触らない)
├── README.md
├── src/
│ └── main.py
└── tests/
└── test_main.py
.git/ フォルダの中に「過去の全 commit と branch の情報」が入っている。.git/ を削除するとそのリポジトリは「ただのフォルダ」に戻り、履歴は失われる。
リポジトリを作る 2 つの方法
方法 1: git init — 既存フォルダをリポジトリ化
新しいプロジェクトを今から始める時:
cd ~/projects
mkdir my-project
cd my-project
git init # → 「.git/」フォルダが作られる
これで my-project/ は Git で履歴管理されるようになる。
方法 2: git clone <URL> — 既存のリポジトリを取ってくる
すでに GitHub などに存在するプロジェクトに参加する時:
cd ~/projects
git clone https://github.com/compassdata/ailms.git
cd ailms # → 履歴も含めて全部ダウンロード済み
clone は 「コピー + 履歴ダウンロード + リモート設定」を一発でやる。新人がプロジェクトに合流するときの定型。
commit とは
commit = 「ここまでの変更を 1 つのまとまり (セーブポイント) として保存する」操作。
各 commit には次の情報が記録される:
| 記録される情報 | 例 |
|---|---|
| 変更内容 (どのファイルがどう変わったか) | src/login.py に 30 行追加 |
| commit ハッシュ (一意の管理番号) | a1b2c3d4e5f6... (40 文字) |
| 著者 (誰が) | 山田太郎 <yamada@example.com> |
| 日時 (いつ) | 2026-05-16 14:32:01 |
| commit メッセージ (なぜ・何をしたか) | "fix: ログイン後のリダイレクト先を /home に変更" |
commit ハッシュの正体
a1b2c3d4e5f6... という英数字 40 桁は、変更内容と著者と日時から計算された指紋。同じ内容で同じ日時に同じ人がコミットしない限り、絶対にぶつからない。
普段は先頭 7 桁 (a1b2c3d) で参照する。GitHub の URL でも 7 桁が使われる:
https://github.com/compassdata/ailms/commit/a1b2c3d
セーブポイント (commit) の作り方 — 3 ステップ
- ファイルを編集 — エディタ・AI Agent で変更を加える
git add <ファイル名>— その変更を「次のセーブに含める」と宣言git commit -m "メッセージ"— 実際にセーブポイントを作る
実際の例:
# ファイル編集後
git status # 何が変わったか確認
git add src/login.py # 1 ファイルだけステージング
git add -A # 変更全部をステージング (慎重に)
git commit -m "fix: ログイン後の遷移先修正"
なぜ「ステージング」という中間段階があるのか
ステージングがあると、「1 つの commit に意味のある単位の変更だけを入れる」ことができる。
「ログイン修正」と「検索機能改善」を別々の commit に分ければ、後で「ログイン修正だけ取り消したい」ことができる。
振り返り
- リポジトリ = プロジェクトのフォルダ + 履歴 (
.git/) - commit = セーブポイント。後から好きな地点に戻れる
- ステージング (
git add) があるから「意味のある単位」でセーブできる - ハッシュは内容から生成される一意な ID。先頭 7 桁で識別する
次のレッスンでは、git status / git log / git diff で今の状態と履歴を読む方法を学びます。
参考リンク
- Pro Git「Git の基本」: https://git-scm.com/book/ja/v2/使い始める-Git-の基本
man git-commitまたはgit help commit
全 14 レッスンを、登録なしで無料で読めます。