コンテンツにスキップ
X

ブランチとマージ - 実践ガイド

ブランチ(Branch)とは、メインのコードから分岐して独立した開発ラインを作る仕組みです。新機能の追加やバグ修正を main ブランチに影響を与えずに行えます。作業が完了したら、ブランチを main に統合(マージ)します。

マージ(Merge)とは、別のブランチで行った変更を現在のブランチに統合する操作です。

対象読者: Git の基本操作(add・commit・push)を理解している方

学習時間の目安: 読了 20分 + 実践 20分

前提知識: Git の基本操作GitHub のセットアップ を完了していること

main ──●──●──────────────────●── (マージ後)
              ↘                ↗
feature         ●──●──●──●

main から分岐した feature ブランチで開発し、完成後に main へマージします。これにより、開発中の未完成なコードが本番環境に混入することを防げます。

ファストフォワードとマージコミット

Section titled “ファストフォワードとマージコミット”
種類発生条件特徴
ファストフォワード(FF)main に新しいコミットがない場合履歴が一直線になる
マージコミットmain にも新しいコミットがある場合マージの記録が残る

作業を始める前に、必ず main ブランチを最新の状態にします。

git checkout main
git pull origin main
git checkout -b feature/new-feature

-b オプションはブランチを新規作成して切り替えます。feature/ のようなプレフィックスを付けると、ブランチの目的が分かりやすくなります。

ブランチ上で作業し、コミットします。

# ファイルを編集する
git add .
git commit -m "新機能を追加"

作業が完了したら 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)を使ってレビューを経てからマージするのが一般的です。

  1. 作業ブランチを GitHub に push する
    git push origin feature/new-feature
  2. GitHub のリポジトリページで New pull request をクリック
  3. base(マージ先)に maincompare(マージ元)に feature/new-feature を選択
  4. PR のタイトルと説明を入力
  5. Create pull request をクリック
  6. チームメンバーがコードをレビュー
  7. 問題なければ Merge pull request をクリック

💡 PR を使うと、変更内容をレビューしてもらえるため、バグの混入を事前に防げます。1人での開発でも PR を使う習慣をつけると、後から変更の意図が分かりやすくなります。

コンフリクト(競合)とは、main とブランチの両方で同じファイルの同じ箇所が変更されたときに発生します。Git は自動でどちらを採用すれば良いか判断できないため、手動での解消が必要です。

コンフリクトが発生すると、ファイルに以下のような記号が挿入されます。

<<<<<<< HEAD
こちらが main ブランチの内容
=======
こちらが feature ブランチの内容
>>>>>>> feature/new-feature
  1. コンフリクトが起きたファイルをエディタで開く
  2. <<<<<<<=======>>>>>>> の記号を含む箇所を見つける
  3. 残したい内容に書き換え、記号をすべて削除する
  4. ファイルを保存する
  5. ステージングしてコミットする
git add <修正したファイ>
git commit

⚠️ コンフリクトの記号(<<<<<<< など)が残ったままコミットしないよう注意してください。

  1. 必要に応じて push する
git push origin main
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. mainmaster どちらが正しいですか?

どちらも正しい名前です。GitHub の新しいリポジトリはデフォルトで main を使います。古いリポジトリには master が使われていることがあります。チームや既存プロジェクトの設定に合わせましょう。

Q. ブランチはいつ削除するべきですか?

マージが完了したブランチは削除することを推奨します。不要なブランチが増えると管理が煩雑になります。git branch -d branch-name で安全に削除できます(マージ済みのブランチのみ削除されます)。

Q. コンフリクトが怖くてマージできません。

コンフリクトは正常な Git の動作です。慌てず、エディタで問題箇所を確認してから修正すれば解決できます。不安な場合は git merge --abort でマージを中止して最初の状態に戻せます。