git branchの使い方決定版!作成・一覧・削除・名前変更コマンドを徹底解説

コマンドリファレンス

git branch コマンドは、Gitでブランチの「作成」「一覧表示」「削除」「名前変更(リネーム)」など、ブランチ全般を管理するための非常に重要なコマンドです。
ブランチを活用することで、本番環境のコードに影響を与えることなく、安全に機能追加やバグ修正を並行して進めることができます。

注意点として、git branch コマンド単体ではブランチの切り替え(移動)はできません。切り替えには git switch または git checkout を使用します。

本記事では、git branch の基本的な使い方から、実務でよく使うオプション、リモートブランチの操作、さらには「間違えて削除してしまったブランチの復元方法」などの応用テクニックまで徹底的に解説します。

【早見表】git branch の主要コマンド一覧

日常的に頻出する git branch の主要な使い方と、関連する切り替えコマンドの早見表です。

実行したい操作実行するコマンド備考
ローカルブランチを一覧表示git branch現在のブランチに * が付く
リモート含む全ブランチを一覧表示git branch -aリモートブランチは赤字などで表示される
新しいブランチを作成git branch <ブランチ名>作成のみで、切り替えは行わない
【推奨】ブランチを作成して切り替えgit switch -c <ブランチ名>git checkout -b でも同様に動作
ブランチを切り替える(移動)git switch <ブランチ名>git checkout でも同様に動作
マージ済みのブランチを安全に削除git branch -d <ブランチ名>未マージの場合はエラーになる
未マージのブランチを強制削除git branch -D <ブランチ名>不要になった作業ブランチの破棄に便利
現在のブランチ名を変更git branch -m <新ブランチ名>今いるブランチの名前を変更する
リモートブランチを削除git push origin --delete <ブランチ名>リモートリポジトリ上のブランチを削除

1. ブランチの一覧を表示する(git branch)

リポジトリに存在するブランチを一覧表示します。表示範囲や詳細度を切り替える各種オプションが用意されています。

ローカルブランチのみを表示する

git branch

オプションをつけずに実行すると、ローカルリポジトリにあるブランチの一覧が表示されます。現在チェックアウト(選択)しているブランチの頭には * (アスタリスク)が表示されます。

出力例:

  develop
  feature/login
* main

リモートブランチを含めてすべて表示する(-a)

git branch -a

-a(all)オプションを使用すると、ローカルブランチだけでなく、GitHubなどのリモートリポジトリから取得したリモート追跡ブランチ(remotes/origin/...)も一緒に表示されます。

出力例:

  develop
  feature/login
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/develop
  remotes/origin/feature/login
  remotes/origin/main

リモートブランチのみを表示する(-r)

git branch -r

-r(remote)オプションを使用すると、ローカルブランチを除いた、リモート追跡ブランチのみが表示されます。

コミット情報や追跡ブランチを表示する(-v / -vv)

git branch -v
# またはさらに詳細な
git branch -vv

-v オプションを付けると、各ブランチの最新のコミットIDとコミットメッセージが合わせて表示されます。
-vv のように v を2つ重ねると、そのローカルブランチがどのリモートブランチ(上流ブランチ)を追跡しているかも確認できます。

出力例(-vv の場合):

  develop       a1b2c3d [origin/develop] Update README.md
  feature/login e5f6g7h [origin/feature/login: ahead 1] Add login validation
* main          9z8y7x6 [origin/main] Fix critical bug

マージ済み / 未マージのブランチを絞り込んで表示する

ブランチ整理の際に役立つ絞り込み機能です。

  • 現在のブランチにマージ済みのブランチを表示する:
    git branch --merged
  • 現在のブランチにまだマージされていないブランチを表示する:
    git branch --no-merged

git branch --merged で表示されたブランチはマージが終わっているため、安全に削除することができます。

2. ブランチを新規作成する(git branch <ブランチ名>)

新しいブランチを作成して、現在の開発ラインから分岐させます。

現在のブランチから新規作成する

git branch feature/new-page

現在チェックアウトしているブランチの最新コミットを起点にして、feature/new-page というブランチを作成します。

繰り返しになりますが、このコマンドを実行しただけでは、作成されたブランチへの切り替え(移動)は行われません。移動するには以下のコマンドを実行します。

git switch feature/new-page

【推奨】作成と切り替えを同時に行う

「ブランチ作成と切り替えを別々に行うのが面倒」という場合は、git switch または git checkout のオプションを使用するのが実務で最も一般的です。

# git switch を使う場合(推奨)
git switch -c feature/new-page

# git checkout を使う場合(古い方法ですが広く使われています)
git checkout -b feature/new-page

特定のコミットや他のブランチから新規作成する

カレントブランチ以外から分岐させたい場合は、ブランチ名の後ろに起点(ベースコミット)を指定します。

# 特定のコミットIDからブランチを作成する
git branch hotfix-bug a1b2c3d

# 他のローカルブランチ(例: develop)からブランチを作成する
git branch feature/api develop

# タグ(例: v1.0.0)からブランチを作成する
git branch release-1.0 v1.0.0

3. ブランチを削除する(-d / -D)

開発が完了した、または不要になったブランチを削除してリポジトリをクリーンに保ちます。

マージ済みのブランチを安全に削除する(-d)

git branch -d feature/login

-d(–delete)オプションは、指定したブランチがメインブランチ(mainやdevelopなど)にマージ済みの場合にのみ削除を許可します。もし未マージの変更が含まれている場合は以下のような警告エラーが表示され、誤削除を防いでくれます。

error: The branch 'feature/login' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature/login'.

未マージのブランチを強制削除する(-D)

git branch -D feature/abandoned

-D(大文字のD、または --delete --force)を使用すると、マージ状況に関わらずブランチを強制削除します。途中で作成をやめた機能ブランチや、実験用のブランチを丸ごと破棄したい場合に使用します。

注意:現在チェックアウトしているブランチは削除できない

自分が今「立っている」ブランチを削除しようとすると、以下のエラーが発生します。

error: Cannot delete branch 'feature/login' checked out at '/path/to/repo'

この場合は、まず別のブランチ(mainなど)に切り替えてから削除を実行します。

# 1. 別のブランチに切り替える
git switch main

# 2. 対象のブランチを削除する
git branch -d feature/login

リモートリポジトリ上のブランチを削除する

ローカルブランチを削除しても、すでにGitHub等にプッシュしてあるリモートブランチは自動的に消えません。リモート側のブランチも消したい場合は git push コマンドを使います。

git push origin --delete feature/login

4. ブランチ名を変更する(-m)

ブランチのスペルミスを修正したい場合や、命名ルールに従って名前を変更したい場合に使用します。

現在のブランチ名を変更する

# 名前を変更したいブランチに切り替えておく
git switch feature/misspelled-name

# 新しいブランチ名を指定して実行
git branch -m feature/correct-name

他のブランチ名を変更する

# git branch -m <古いブランチ名> <新しいブランチ名>
git branch -m feature/old-name feature/new-name

すでにプッシュしたリモートブランチの名前を変更する手順

すでにリモートにプッシュされているブランチ名を変更したい場合は、単にローカルを変更するだけでは同期されません。以下の手順でリモートを更新します。

  1. ローカルでブランチ名を変更する:
    git branch -m feature/old-name feature/new-name
  2. 古い名前のリモートブランチを削除する:
    git push origin --delete feature/old-name
  3. 新しい名前のブランチをプッシュし、上流ブランチを設定する:
    git push -u origin feature/new-name

5. 応用・トラブルシューティング

間違えて削除したローカルブランチを復元する

「マージ前のブランチを -D で誤って強制削除してしまった!」という場合でも、コミットした履歴があれば復元できる可能性があります。Gitの操作履歴を記録している git reflog を使用します。

  1. Gitの操作ログを確認する:
    git reflog

出力から、削除したブランチの「削除直前のコミット(例えば HEAD@{3} やコミットハッシュ a1b2c3d)」を見つけます。

9z8y7x6 HEAD@{0}: checkout: moving from feature/bugfix to main
a1b2c3d HEAD@{1}: commit: Add new feature work  <-- これが削除前の最新コミット
  1. そのコミットから新しくブランチを作成する:
    git branch feature/bugfix a1b2c3d

これで、削除したブランチが削除直前のコミット状態で再作成(復元)されます。

6. ブランチ命名規則のベストプラクティス

複数人の開発では、ブランチ名に共通のプレフィックス(接頭辞)を使用すると、役割が分かりやすく、ツール上でも整理しやすくなります。よく使われる一般的なプレフィックスは以下の通りです。

プレフィックス主な目的具体例
feature/機能追加・変更の開発作業feature/login-form
bugfix/バグ・不具合の修正作業bugfix/ie11-flexbox
hotfix/本番環境での緊急の不具合修正(mainから直接分岐)hotfix/payment-error
release/本番リリースへの準備用(バージョン番号など)release/v2.1.0

また、複数人での競合を防ぐため、feature/user-name/login-form のようにチームメンバーの名前や、課題管理ツールのチケットID(例: feature/MUC-3965/git-branch)をブランチ名に含める運用も一般的です。

まとめ

git branch は、Gitで開発を進める上でほぼ毎回触る基本コマンドです。

  • 現在の状態を見るなら git branch
  • 新しい作業を始めるなら git switch -c <ブランチ名>
  • 作業が終わったら git branch -d <ブランチ名> で整理

この基本パターンを身につけ、ブランチを適切に使いこなしましょう!

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント