ブランチとマージ - 実践ガイド
ブランチ(Branch)とは、メインのコードから分岐して独立した開発ラインを作る仕組みです。新機能の追加やバグ修正を main ブランチに影響を与えずに行えます。作業が完了したら、ブランチを main に統合(マージ)します。
マージ(Merge)とは、別のブランチで行った変更を現在のブランチに統合する操作です。
対象読者: Git の基本操作(add・commit・push)を理解している方
学習時間の目安: 読了 20分 + 実践 20分
前提知識: Git の基本操作 と GitHub のセットアップ を完了していること
Git のブランチ概念
Section titled “Git のブランチ概念”main ──●──●──────────────────●── (マージ後)
↘ ↗
feature ●──●──●──●main から分岐した feature ブランチで開発し、完成後に main へマージします。これにより、開発中の未完成なコードが本番環境に混入することを防げます。
ファストフォワードとマージコミット
Section titled “ファストフォワードとマージコミット”| 種類 | 発生条件 | 特徴 |
|---|---|---|
| ファストフォワード(FF) | main に新しいコミットがない場合 | 履歴が一直線になる |
| マージコミット | main にも新しいコミットがある場合 | マージの記録が残る |
CLI でのマージ手順
Section titled “CLI でのマージ手順”main を最新化する
Section titled “main を最新化する”作業を始める前に、必ず main ブランチを最新の状態にします。
git checkout main
git pull origin mainブランチを作成して作業する
Section titled “ブランチを作成して作業する”git checkout -b feature/new-feature-b オプションはブランチを新規作成して切り替えます。feature/ のようなプレフィックスを付けると、ブランチの目的が分かりやすくなります。
ブランチ上で作業し、コミットします。
# ファイルを編集する
git add .
git commit -m "新機能を追加"main へマージする
Section titled “main へマージする”作業が完了したら main に切り替え、マージを実行します。
git checkout main
git merge feature/new-featureマージが成功したら、リモートに push します。
git push origin main💡 マージ後のブランチは不要なので削除できます。
git branch -d feature/new-feature
GitHub の Pull Request を使ったマージ
Section titled “GitHub の Pull Request を使ったマージ”チーム開発では、直接マージするのではなく Pull Request(プルリクエスト、PR)を使ってレビューを経てからマージするのが一般的です。
- 作業ブランチを GitHub に push する
git push origin feature/new-feature - GitHub のリポジトリページで New pull request をクリック
- base(マージ先)に
main、compare(マージ元)にfeature/new-featureを選択 - PR のタイトルと説明を入力
- Create pull request をクリック
- チームメンバーがコードをレビュー
- 問題なければ Merge pull request をクリック
💡 PR を使うと、変更内容をレビューしてもらえるため、バグの混入を事前に防げます。1人での開発でも PR を使う習慣をつけると、後から変更の意図が分かりやすくなります。
コンフリクトの解消
Section titled “コンフリクトの解消”コンフリクト(競合)とは、main とブランチの両方で同じファイルの同じ箇所が変更されたときに発生します。Git は自動でどちらを採用すれば良いか判断できないため、手動での解消が必要です。
コンフリクトが発生すると、ファイルに以下のような記号が挿入されます。
<<<<<<< HEAD
こちらが main ブランチの内容
=======
こちらが feature ブランチの内容
>>>>>>> feature/new-featureコンフリクトの解消手順
Section titled “コンフリクトの解消手順”- コンフリクトが起きたファイルをエディタで開く
<<<<<<<、=======、>>>>>>>の記号を含む箇所を見つける- 残したい内容に書き換え、記号をすべて削除する
- ファイルを保存する
- ステージングしてコミットする
git add <修正したファイル>
git commit⚠️ コンフリクトの記号(
<<<<<<<など)が残ったままコミットしないよう注意してください。
- 必要に応じて push する
git push origin mainブランチ操作コマンド一覧
Section titled “ブランチ操作コマンド一覧”git branch # 現在のブランチ一覧を表示
git branch feature/name # 新しいブランチを作成(切り替えない)
git checkout -b feature/name # 新しいブランチを作成して切り替え
git checkout main # main ブランチに切り替え
git branch -d feature/name # マージ済みブランチを削除
git branch -D feature/name # 強制削除(マージ未済みでも削除)Q. main と master どちらが正しいですか?
どちらも正しい名前です。GitHub の新しいリポジトリはデフォルトで main を使います。古いリポジトリには master が使われていることがあります。チームや既存プロジェクトの設定に合わせましょう。
Q. ブランチはいつ削除するべきですか?
マージが完了したブランチは削除することを推奨します。不要なブランチが増えると管理が煩雑になります。git branch -d branch-name で安全に削除できます(マージ済みのブランチのみ削除されます)。
Q. コンフリクトが怖くてマージできません。
コンフリクトは正常な Git の動作です。慌てず、エディタで問題箇所を確認してから修正すれば解決できます。不安な場合は git merge --abort でマージを中止して最初の状態に戻せます。