【世界一わかりやすいGit/GitHub入門④】ブランチ超入門

投稿更新日: 2026/1/4

サムネイル
  • まずは、入門③宿題の回答編から

【入門③】宿題

  • 変更→コミットを3回繰り返す(README、notes.md、サンプルコードなど)

【入門③】宿題の答え合わせ

# 直近コミットの確認
git log --oneline -n 5
  • ✅ 直近に3件の新規コミットが並ぶ
  • ✅ 合計コミット数が最低4件以上(初期コミット+docs追加+今回3件)

まだ足りない場合の最短修正例

echo "- 追記: ログ確認OK" >> docs/notes.md
git add docs/notes.md
git commit -m "docs: add quick note for homework completion"
git log --oneline -n 5

ブランチ超入門(mainを汚さない開発の型)

  • 合言葉は「mainは常に動く状態に」。 新しい作業はトピックブランチ**(例:feature/...fix/...)で行い、終わったらmainへマージします。

三行でわかるブランチ

  • branch: 履歴上の“作業の分岐点”。
  • switch: 作業するブランチを切り替える。
  • merge: 分岐した変更を元に戻す(統合する)。

Step 1. トピックブランチを切る

# mainにいることを確認
git switch main
git pull --ff-only  # ※後でGitHubと連携した時に役立つ習慣

# ブランチを作りつつ切り替え
git switch -c feature/readme-badges

いまどこにいる?(確認)

git branch    # * が付いているのが現在のブランチ

Step 2. 変更してコミット(ブランチ上で作業)

# 例:READMEにバッジ用の見出しを追記
echo "" >> README.md
echo "## Badges (coming soon)" >> README.md

git add README.md
git commit -m "docs: add badges section to README"

mainへマージ(統合)

git switch main
git merge --no-ff feature/readme-badges -m "merge: badges section from feature/readme-badges"
  • fast-forward(FF):分岐がないときに“早送り”で統合。履歴が直線。
  • --no-ff:FF可能でもマージコミットを作る。ブランチでの作業単位が履歴に残り、後から追いやすい。

後片付け(使い終わったブランチは削除)

git branch -d feature/readme-badges

Step 4. コンフリクト解消を安全に体験する

同じ行をmainfeatureで別々に編集すると、マージ時に コンフリクト(衝突) が起きます。ここでは安全な“練習用”手順で体験します。

4-1. 準備:練習用の分岐を作成

# mainでREADMEの同じ行を編集
git switch main
echo "Line to conflict (main)" >> README.md
git add README.md
git commit -m "docs: add line on main for conflict demo"

# ブランチ作成&切替
git switch -c feature/conflict-demo

4-2. ブランチ側でも同じ行を編集

# ※ 同じ箇所を違う内容にする
sed -i '' 's/Line to conflict (main)/Line to conflict (feature)/' README.md 2>/dev/null || \
perl -0777 -pe 's/Line to conflict \(main\)/Line to conflict (feature)/' -i README.md

git add README.md
git commit -m "docs: change the same line differently on feature"

4-3. マージして衝突させる

git switch main
git merge feature/conflict-demo
# => コンフリクト発生のメッセージ

4-4. マーカーを手で解消する

<<<<<<< HEAD
Line to conflict (main)
=======
Line to conflict (feature)
>>>>>>> feature/conflict-demo
  • どちらかを採用、もしくは両方を編集して新しい行にまとめる
  • マーカー行(<<<<<<< / ======= / >>>>>>>)は必ず削除

編集後:

Line to conflict (resolved)

4-5. 解消済みとして確定

git add README.md
git commit   # 自動生成のマージメッセージでOK

4-6. 後片付け

git branch -d feature/conflict-demo

ミニFAQ(つまずきポイント)

  • merge: unrelated histories と言われる → 別リポジトリの履歴を混ぜた可能性。学習中は無理に統合しない。
  • コンフリクトが多すぎて怖い → 一度 git merge --abort で元に戻す→ 小さく分けて再挑戦。
  • 履歴がわかりにくい → 小さなトピックブランチ+--no-ffで“作業の塊”を明示。git log --oneline --graphが効く。

今日のゴール(できていればOK)

  • git branch / switch / merge の基本操作を説明できる
  • トピックブランチで作業→mainに安全に統合できた
  • 簡単なコンフリクト解消を体験した

宿題(次回の答え合わせで使います)

テーマ:トピックブランチを作ってマージ

所要時間:10〜15分

1.main からブランチを作成:

git switch main
git switch -c feature/add-tips

2.docs/notes.md に学習メモを2〜3行追加してコミット:

echo "- ブランチは作業の分岐点。mainは常に綺麗に" >> docs/notes.md
echo "- マージ前に diff で最終確認" >> docs/notes.md
git add docs/notes.md
git commit -m "docs: add branching tips"

3.main に戻ってマージ(履歴をわかりやすくするため --no-ff 推奨):

git switch main
git merge --no-ff feature/add-tips -m "merge: add branching tips"

4.後片付け:

git branch -d feature/add-tips

5.ログ確認:

git log --oneline --graph -n 5

成果物

  • コミットが合計で最低4件以上(初期コミット+前回のdocs追加+今回3件)

次回予告(⑤へ続く)

  • 第5回はリモートとGitHub(push / pullの正体)。
    • GitHub上にリポジトリを作る
    • origin 登録→ git push -u origin main
    • Pull → 変更 → Pushの往復を体験します。

付録:今日のチートシート

# ブランチ
git branch                # 一覧
git switch <name>         # 切替
git switch -c <name>      # 作成して切替
git branch -d <name>      # 削除

# マージ
git merge <branch>        # 統合(FFの場合は早送り)
git merge --no-ff <br>    # マージコミットを作る

# コンフリクト
git status                # どのファイルが衝突か
# ファイルを編集してマーカー削除 → 解消
git add <resolved-file>
git commit                # マージ確定

# 履歴視覚化
git log --oneline --graph --decorate -n 10

この記事をシェアする

合同会社raisexでは一緒に働く仲間を募集中です。

ご興味のある方は以下の採用情報をご確認ください。