ブランチ — Branch · Merge · Rebase · Conflict · Stash
ブランチ — Branch · Merge · Rebase · Conflict · Stash
🎯 このlessonを読み終えたら
このlessonを読み終えると、以下の3つを自信を持って実践できるようになります。
- ▸✅ Git Flow vs Trunk-based Development
- ▸✅ rebaseとmergeの違い + 使いどころ
- ▸✅ Squash merge + コミット整理
学習目標をチェックリストとして持ち、すべて答えられるようになったらlessonを閉じてください。
ブランチ作業フロー 6ステップ
1. 作成 — git checkout -b feature/login (mainから分岐)
2. 作業・コミット — コード編集 + git commit. mainに影響なし
3. push — git push -u origin feature/login — リモートにトラッキングブランチを作成
4. PR作成 — GitHubでPull Requestを作成。レビュー依頼
5. 承認 → マージ — レビュー通過 + CI通過 → mainにマージ
6. ブランチ削除 — マージ後は不要。git branch -d またはGitHub UI
> 💡 ブランチ = 並行宇宙。mainは本番コード、featureは実験コード。実験が失敗しても、ブランチを捨てるだけで済みます。
Merge vs Rebase — 2つの統合方式
Merge — git merge feature でmainに統合
- ▸結果: Merge Commit が新たに作成される。分岐の痕跡が残る
- ▸メリット: 安全。元のコミットが保存される
- ▸デメリット: 履歴が複雑になる(ダイヤモンド形)
Rebase — git rebase main でfeatureをmainの上に移動
- ▸結果: 線形な履歴。すっきりする
- ▸メリット: 可読性向上。一本のタイムライン
- ▸デメリット: コミットハッシュが再生成される。push済みブランチには危険
どちらをいつ使う?
コンフリクト解消の4つのオプション
同じ行を別々に変更した場合 → Gitがコンフリクトマーカーを挿入:
解消方法:
1. 自分のものを選択 (Accept Current) — 上のコードのみ残し、マーカーと下を削除
2. 相手のものを選択 (Accept Incoming) — 下のコードのみ残し、マーカーと上を削除
3. 両方残す (Accept Both) — 両側を保持し、マーカーのみ削除
4. 新規作成 — 両方を無視して新たに書く(どちらも不十分な場合に最もよく使われる)
解消後:
> 💡 IDE推奨: VS CodeとIntelliJにはコンフリクト解消GUIが内蔵されています。'Accept Both'ボタンが最も安全です。
Git Stash — 作業の一時引き出し
シナリオ: feature/loginの作業中に本番バグ発生 → 今すぐ修正が必要
解決手順:
その他のコマンド:
- ▸
git stash list— 引き出しの一覧を確認 - ▸
git stash show -p— 変更内容をプレビュー - ▸
git stash drop— 引き出しを空にする(復元不可) - ▸
git stash apply— popと同じだが、引き出しにエントリを残す
> ⚠️ stashが溜まりすぎると忘れてしまいます。使用後すぐにpopするか、commitで整理することを推奨します。
🤖 AIへの依頼例
このlessonの概念を知っていると、AIに具体的に指示できます。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。
- ▸「このhotfixをmainにマージするための安全なgit revert手順を教えて」
- ▸「このfeatureブランチのコミットをsquash + rebaseで整理して」
なぜこれでトークンが減るのか
概念を知らないと、AIの回答を受け取っても「それってどういう意味ですか?」とまた聞き直すことになります。その「聞き直し」がトークンを消費します。概念を一度習得しておけば、会話が一度で終わります。