git branchとは?ブランチの本当のメリット・デメリットと現場で困らない使い方【git branch】
git branchを今さら人に聞けないエンジニアへ:ブランチとは何か、なぜ現場で必須なのか
正直に言うと、ブランチって「便利そう」まではわかるけど、実戦で使ってないと永遠に“ふわっとした概念”のままです。
しかも、チームではGit操作自体はやってるから、余計に「今さら聞けない…」になりがち。
このページは、git branchをほぼ使ったことがない“知ったかぶりエンジニア”が、現場で困らないところまで一気に追いつくための実用記事です。
- git branch(ブランチ)とは?一言でいうと
- ブランチのリアルなメリット(現場で効くやつだけ)
- ブランチのリアルなデメリット(ここを知らないと嫌いになる)
- まず覚えるべき前提:main(本線)と作業ブランチの関係
- 今日から使える:ブランチ運用の最小セット(これだけで8割勝てる)
- 具体的な操作方法:ブランチ作業の基本フロー(コピペでOK)
- よく使うコマンドまとめ(ブランチ周りだけ)
- 「checkout」と「switch」の違い(今さらポイント)
- ブランチの統合(マージ)を理解する:mergeとrebaseの超実用比較
- コンフリクト(競合)が怖い人へ:一番ラクな回避策
- 今さら事故りがちポイント集(“知ったか”が一番やるやつ)
- 現場でよくあるブランチ運用パターン(あなたのチームに合わせて選ぶ)
- “git branch”で検索して来た人が、明日から困らない最短チェックリスト
- まとめ:ブランチは「うまく使うと、あなたの作業を守る防具」
- おまけ:ブランチ系コマンド早見表(必要なときにだけ見ればOK)
git branch(ブランチ)とは?一言でいうと
ブランチとは、同じリポジトリの中で、別の作業線(履歴の分岐)を作る仕組みです。
もっと噛み砕くと、「本番に影響しない別世界を作って、安心して作業できる」のがブランチです。
ブランチが無い世界の地獄(あるある)
- main(またはmaster)で直接作業して、途中の未完成コミットが混ざる
- 「とりあえず動く」状態を保てず、他メンバーの作業を止める
- 緊急修正を入れたいのに、開発中の変更が邪魔で切り戻しが面倒
- 誰の変更がどれか追いにくい(レビュー不能・責任境界が曖昧)
ブランチのリアルなメリット(現場で効くやつだけ)
メリット1:未完成の作業をmainに混ぜずに済む(事故率が激減)
ブランチ運用の本質はここです。mainは常に動く状態に保ち、作業はブランチで進めます。
「mainが壊れて全員の開発が止まる」を避けられます。
メリット2:レビューが成立する(差分が見える)
Pull Request(PR)/ Merge Request(MR)は、基本的にブランチ差分が前提です。
ブランチがあると、変更の意図・影響範囲・戻しやすさが一気に改善します。
メリット3:緊急対応(hotfix)が刺さる
本番で障害 → すぐ直したい。
でもmainに開発途中の大きな改修が入っていると、リリースできません。
ブランチ運用なら、本番と同じ地点からhotfixブランチを作って、最小修正だけを安全に出すことができます。
メリット4:「並行作業」が当たり前にできる
- Aさん:新機能
- Bさん:バグ修正
- Cさん:リファクタ
全員が別ブランチで進め、レビューして順にmainへ。
これができると、チーム開発が“ワークフロー”になります。
ブランチのリアルなデメリット(ここを知らないと嫌いになる)
デメリット1:マージが怖い(コンフリクト)
ブランチを切るほど、どこかで統合が必要になります。
同じ行や同じファイルを複数人が触ると、コンフリクト(競合)が起きます。
ただし、これは「ブランチが悪い」ではなく、統合の頻度が低い / ブランチが長生きしすぎが主原因です。
デメリット2:運用が雑だとブランチが墓場になる
- ブランチが増えすぎて何が何だかわからない
- 放置ブランチだらけ(どれが最新?)
- 巨大PRでレビュー不能
対策はシンプルで、ブランチ命名・短命運用・小さめPRを守るだけで激減します。
デメリット3:rebase/force push周りで事故る
慣れるまでは、共有ブランチに対するrebaseやforce pushが事故ポイントです。
ルールさえ決めれば回避できます(後半にまとめます)。
まず覚えるべき前提:main(本線)と作業ブランチの関係
- main:安定しているべき(デプロイ対象になりがち)
- featureブランチ:新機能・改修
- fixブランチ:バグ修正
- hotfixブランチ:本番緊急修正(最短で出す)
今日から使える:ブランチ運用の最小セット(これだけで8割勝てる)
運用ルール(ミニマム)
- mainに直接コミットしない(原則)
- 作業は必ずブランチを切る
- PR/MRでレビューしてmainへ取り込む
- 取り込み後はブランチを消す(墓場化防止)
- ブランチは短命(理想:数時間〜数日)
ブランチ名のおすすめ(迷ったらこれ)
- feature/xxx:新機能(例:feature/genba-search)
- fix/xxx:通常のバグ修正(例:fix/login-redirect)
- hotfix/xxx:本番緊急修正(例:hotfix/payment-500)
- chore/xxx:雑務(依存更新、設定など)(例:chore/deps-update)
具体的な操作方法:ブランチ作業の基本フロー(コピペでOK)
0) まずは最新のmainを手元に持ってくる
git switch main
git pull
※ 古いgitだと git switch が無いことがあります。その場合は git checkout を使います(後述)。
1) ブランチを作って移動する
# 新しいブランチを作って、そのまま移動
git switch -c feature/genba-search
2) いつも通り作業してコミット
git status
git add .
git commit -m "Add search form and filters"
3) リモートにpushして、PR/MRを作る
git push -u origin feature/genba-search
-u を付けると、次から git push だけで同じ行き先にpushできます(地味に便利)。
4) レビューOK → mainへ取り込まれたら、手元も掃除
git switch main
git pull
# ローカルブランチ削除
git branch -d feature/genba-search
もし「マージされてないから消せない」と言われたら、強制削除:
git branch -D feature/genba-search
5) リモートブランチも消す(GitHub等で自動削除設定も可)
git push origin --delete feature/genba-search
よく使うコマンドまとめ(ブランチ周りだけ)
ブランチ一覧を見る
# ローカル
git branch
# リモート含む
git branch -a
今どのブランチにいるか確認する
git status
ブランチ名を変更する
git branch -m feature/old-name feature/new-name
リモートの最新状態を取得(fetch)
git fetch --prune
--prune は、消されたリモートブランチ情報も掃除してくれます(放置すると一覧が汚れます)。
「checkout」と「switch」の違い(今さらポイント)
昔からある git checkout は、ブランチ移動もファイル復元もできる“多機能すぎる”コマンドでした。
最近は役割を分けて、
git switch:ブランチ移動git restore:ファイル復元
になっています。可能なら switch/restore を使う方が事故が減ります。
ただし環境により switch が無い場合は checkout でもOKです。
ブランチの統合(マージ)を理解する:mergeとrebaseの超実用比較
merge:安全寄り・現場で一番無難
ブランチの変更をmainへ取り込む一般的な方法です。履歴は「マージコミット」として残ります。
GitHubのPRの「Merge」ボタンは基本これ系です(設定でSquash/Rebaseも可)。
rebase:履歴をきれいにできるが、ルール無しだと事故る
rebaseは、コミットの土台を付け替えるイメージです。履歴が直線的になり見やすい反面、
すでに共有しているブランチをrebaseすると、履歴が書き換わって衝突や混乱が起こりやすいです。
初心者(ブランチ未経験)が採用するなら、この結論
- 基本は PRでmerge(またはsquash merge) が一番ラク
- rebaseは「自分だけが触っている個人ブランチ」で、慣れてから
- 共有ブランチにrebaseするなら、チームルール必須
コンフリクト(競合)が怖い人へ:一番ラクな回避策
回避策1:ブランチを短命にする(最大の正解)
1週間放置したブランチは、ほぼコンフリクト製造機です。
「小さく切る」「早くPR」「早くマージ」これだけでだいぶ勝ちます。
回避策2:mainをこまめに取り込む(ただし方法に注意)
作業ブランチで、mainの更新を取り込んでズレを減らします。
# 作業ブランチで
git fetch origin
git merge origin/main
「rebaseで取り込む」もありますが、慣れないうちはmergeでOKです。
回避策3:巨大ファイル・同じ箇所を触る設計を減らす
- 巨大な設定ファイルをみんなで触る → 競合しがち
- 同じテンプレ/同じ関数に変更が集中 → 競合しがち
「分割」「責務分離」「変更範囲を狭くする」だけでも競合は減ります。
今さら事故りがちポイント集(“知ったか”が一番やるやつ)
事故1:mainで作業してしまった
やりがちです。コミット前ならブランチを切って逃げられます。
(変更がワーキングツリーにある状態で)
git switch -c feature/escape-from-main
コミットしてしまった場合も、ブランチを作って退避できます。
# main上でコミット済みでもOK(その地点を指すブランチを作る)
git branch feature/escape-from-main
事故2:push先を間違えた/別ブランチにpushした
慣れるまでよくあります。まず落ち着いて git status と git branch を確認。
次に「どのブランチがどのコミットを指しているか」を確認します。
git log --oneline --decorate -n 20
事故3:force pushで誰かの履歴を吹き飛ばした
これはシャレになりません。
ルールとして、最低限これだけ守ると安全です:
- mainへはforce pushしない
- 複数人が触るブランチへはforce pushしない
- やるなら
--force-with-leaseを使う(上書き事故を減らす)
# どうしても必要なときはこっち(安全寄り)
git push --force-with-lease
現場でよくあるブランチ運用パターン(あなたのチームに合わせて選ぶ)
パターンA:シンプル運用(おすすめ)
- main(安定)
- feature/fix/hotfix(作業)
PRでレビューしてmainへ。小規模〜中規模チームで最も回りやすいです。
パターンB:developを挟む(Git Flow寄り)
- main(リリース用)
- develop(開発の統合先)
- feature/* → develop → release → main
工程が増える分、運用コストも上がります。
「リリースが厳密」「複数バージョンを並行保守」などがある場合に向きます。
“git branch”で検索して来た人が、明日から困らない最短チェックリスト
- mainは触らない(原則)
- 作業前に
git switch main→git pull git switch -c feature/xxxでブランチ作成- 小さめにコミット、
git push -u origin feature/xxx - PRを作る(レビュー)
- 取り込み後にブランチ削除(ローカル/リモート)
まとめ:ブランチは「うまく使うと、あなたの作業を守る防具」
ブランチの価値は「かっこいいGit使い」になることではなく、
安定したmainを保ち、作業を安全に進め、レビューとリリースを成立させることです。
もし今までブランチを避けてきたなら、まずはこの記事の「最小フロー」だけでOK。
一度回ると、たぶん「なんで今までmainでやってたんだろ…」となります。
おまけ:ブランチ系コマンド早見表(必要なときにだけ見ればOK)
# main最新化
git switch main
git pull
# ブランチ作成&移動
git switch -c feature/xxx
# push(初回)
git push -u origin feature/xxx
# ブランチ一覧
git branch
git branch -a
# リモート情報更新&掃除
git fetch --prune
# main取り込み(作業ブランチで)
git merge origin/main
# ローカルブランチ削除
git branch -d feature/xxx
git branch -D feature/xxx
# リモートブランチ削除
git push origin --delete feature/xxx
※参考にされる場合は自己責任でお願いします。
PCトラブルは解決しましたか?
もし「会社のPCが全部遅い」「Office 365のエラーが多発する」「ネットワークが不安定」といった、調べても解決しない「会社全体」のお悩みがありましたら、ぜひご相談ください。
「Windows11 高速化」といったお悩み検索で毎月1,200人以上が訪れる、
このサイトの運営者(建設会社IT部長)が、川崎・横浜・東京城南エリアの法人様限定で「無料ITお困りごと診断」を行っています。
