ブランチの心象モデル — 「並行宇宙」として理解する
学習目標
このレッスンを終えると、次のことができるようになります。
- branch (ブランチ) を「並行宇宙のスナップショット」として説明できる
- main / feature / hotfix の代表的な使い分けを区別できる
- ブランチ作成・切り替え・削除の基本コマンドを実行できる
ブランチとは何か (1 行で)
branch (ブランチ) = 「ある commit から枝分かれして、本流に影響せずに作業できる並行宇宙」
メインの世界線 (main ブランチ) で本番が動いている横で、自分の作業用世界線 (feature/login ブランチ) で実験ができる。完成したら枝を本流に merge (統合) する。
main で起きた E (バグ修正) と feature/login の C・D は並行して進む。最後に merge して本流に戻る。
なぜブランチを切るか — 4 つの動機
| 動機 | 例 |
|---|---|
| 作業隔離: 失敗しても本流に影響しない | 「ログイン機能を試作したい」→ feature/login |
| レビュー単位: Pull Request で他人が読む単位 | 1 機能 = 1 ブランチ = 1 PR |
| 並行作業: 複数人が同時に違う作業 | 山田は feature/search、鈴木は feature/profile |
| 緊急修正: リリース版を壊さず緊急対応 | hotfix/cve-2026-12345 |
「直接 main に書く」のは、上記すべての利点を捨てる選択。AI Agent 時代であっても、ブランチを切る習慣は基本。
典型的なブランチ命名
| プレフィックス | 用途 | 例 |
|---|---|---|
feature/ |
新機能 | feature/sso-integration |
fix/ または bugfix/ |
バグ修正 | fix/login-redirect |
hotfix/ |
本番緊急修正 | hotfix/security-patch-2026-05、hotfix/cve-2026-12345 |
chore/ |
雑務 (依存更新・整理) | chore/upgrade-django-5.1 |
docs/ |
ドキュメントのみ | docs/add-faq |
experiment/ または wip/ |
実験・破棄前提 | experiment/new-recommender |
ailms プロジェクトでは「目的 + 簡潔な説明」をハイフン区切りで書くのが慣習。
ブランチの基本操作
一覧を見る
git branch # ローカルブランチ一覧。* が現在地
git branch -a # リモートブランチ含む全部
出力例:
feature/profile
* feature/login ← * が現在のブランチ (HEAD)
main
remotes/origin/main
ブランチを作る
git branch feature/login # 作るだけ (移動はしない)
git switch feature/login # そのブランチに移動
# 一発で作って移動 (推奨)
git switch -c feature/login
git switch (Git 2.23 以降) は git checkout の安全な後継。ブランチ切替は switch を使う。
ブランチを削除する
git branch -d feature/login # 安全: merge 済のときだけ削除
git branch -D feature/login # 強制: 未 merge でも削除 (注意!)
⚠️
-D(大文字) は破壊的。AI Agent 単独実行不可。
ブランチを切り替える時の注意
未コミットの変更がある状態でブランチを切り替えると、Git は安全のためエラーで止める:
error: Your local changes to the following files would be overwritten by checkout
対処法は 2 つ:
| 方針 | コマンド | いつ |
|---|---|---|
| コミットしてから移動 | git add -A && git commit -m "wip" |
変更を保持したい |
| 一時退避してから移動 | git stash → 移動 → git stash pop |
まだコミットするほど固まってない |
HEAD と「現在のブランチ」
HEAD = 「いま自分が居る commit を指すポインタ」。普段はブランチ名と同じ位置にある。
main ─── A ─── B
↑
HEAD = main ブランチの先端
git switch feature/login すると HEAD が動く:
main ────── A ─── B
\
feature/login ──── C ─── D
↑
HEAD = feature/login の先端
新しい commit はそのブランチの先端に積まれる。
ブランチは「ポインタ」なのでコピーが速い
Git のブランチはファイルのコピーを作るのではなく、commit を指す軽量なポインタ。だからブランチ作成は一瞬で終わる (古い SVN とは違う)。
「branch を切るのに時間がかかる」「コストが高い」というのは Git では誤解。気軽に切って気軽に捨てるのが正解。
振り返り
- ブランチ = 並行宇宙のスナップショット。作業隔離・レビュー単位・並行作業のために切る
git switch -c <名前>で作成+移動が一発- ブランチは軽量なポインタ。気軽に切って気軽に捨てる
- 未コミット変更がある時は
git stashで退避
次のレッスンでは、分かれた枝を戻す方法 (merge) を学びます。
参考リンク
- Pro Git「ブランチとは」: https://git-scm.com/book/ja/v2/Git-のブランチ機能-ブランチとは
git switch公式: https://git-scm.com/docs/git-switch
全 14 レッスンを、登録なしで無料で読めます。