Ceeds Academy教材アプリ教材・症状語・タグで検索
索引グラフ試す
バージョン管理▸Git

Git: ブランチとマージ(switch / merge)

hands-on所要 30分最新草稿
前提: Git: 変更の確認(status / diff / log)→次: Git: リモートとGitHub(clone / remote / push / pull)
意味グラフ(この教材と内容的に近い教材・1ネスト)
例え(Analogies)
ブランチ=パラレルワールド

ブランチは物語の「if ルート」。main世界を保ったまま別世界で実験し、うまくいったらmain世界に合流(merge)させる。失敗したらその世界を捨てればよい。

概要

📍 version-control ▸ Git ▸ ブランチとマージ | 種別: hands-on | facts_as_of 2026-06(Git 2.54)

公式ドキュメント — hands-on

🎞 スライド

ブランチとマージ

作業を枝分けして、後で統合する

なぜブランチ

mainを壊さず、機能ごとに並行作業

流れ(テキスト図)

main ──●──●─────────────● ← merge で統合
\ /
feature-x ●──●──●──● ← switch -c で枝を作って作業

—
出典(sources)

git-scm.com/docs (git-branch/switch/merge) ; Pro Git (Branching) ; Git 2.54 / 2026-06確認

確認問題(Review-Questions)
fast-forward マージになるのはどんな時か?択一
基礎公式
解答・解説▾ 開く

分岐後にmain側に新しいコミットが無いとき(ポインタを進めるだけで統合できる)。

feature-x ブランチを作って移動し、作業後にmainへ統合するコマンド列を書け。コード
基礎公式
解答・解説▾ 開く

git switch -c feature-x → (作業・コミット)→ git switch main → git merge feature-x

目次
例え概要公式ドキュメント出典確認問題
鮮度
最新
更新: 2026-06-15
次回棚卸し: 2026-12-15
周期: 6か月
版: Git 2.54
枝分け→統合を1枚で
枝分け→統合を1枚で

概要

ブランチは履歴の「枝」。mainを安全に保ったまま、機能ごとに作業を分け、完成したらマージで本流に統合します。

公式ドキュメント準拠(Git 2.54)

git branch                 # ブランチ一覧
git switch -c feature-x    # 作成して移動(modern。旧: git checkout -b)
git switch main            # 別ブランチへ移動
git merge feature-x        # 現在のブランチに feature-x を統合
  • fast-forward:分岐後にmain側へ変更が無ければ、ポインタを進めるだけ。
  • 3-way merge:双方に変更があると統合コミットを作る。衝突時はコンフリクト(→ 別教材)。

出典: Pro Git: Branching / git-branch / git-merge

🧭 誤解訂正集

よくある誤解 正しい理解
ブランチ=ファイルの完全コピー 履歴を指す軽量な「ポインタ」。コピーではない
merge すると履歴が消える 履歴は保たれ、統合のコミットが足される(fast-forward 時は不要)

📖 用語

  • ブランチ … 履歴の「枝」。mainを保ったまま並行作業するための分岐。
  • switch … ブランチの作成・移動を行うコマンド(-c で作成して移動)。
  • merge … 別ブランチの変更を現在のブランチに統合する。
  • fast-forward … 分岐後に本流が進んでいない場合、ポインタを進めるだけの統合。
  • 3-way merge … 双方に変更があるとき、統合コミットを作って合わせる方式。
  • コンフリクト … 双方が同じ箇所を変更し、自動統合できない状態(別教材で解決)。

✅ 確認の目安(can-do)

ブランチを切る理由を説明でき、switch -c → 作業 → merge の流れと、fast-forward と 3-way merge の違いを区別したうえで、**「この作業をどの枝で進め、いつ統合するか」**を判断できる。

⚠️ エラー復旧集

症状 原因 復旧
switch できない 未コミットの変更 commit するか git stash
merge でコンフリクト 双方が同じ箇所を変更 コンフリクト解決(git-08 参照)