Git: ローカルブランチを削除する
最終更新
ブランチの作業がマージされたら、git branch -d <branch> で削除します。どこにもマージされていないコミットがブランチに残っている場合、Git は削除を拒否します - これは安全のためのチェックです。それでも削除するには、大文字の -D を使います。ローカルブランチを削除してもリモート上のコピーには一切影響しません。それは別のコマンドです。
これらをターミナルプレイグラウンドで試してみましょう - ブラウザ内の本物のシェルで、インストール不要です。
構文
| Command | What it does |
|---|---|
git branch -d feature | feature を削除する(マージ済みの場合のみ) |
git branch -D feature | 未マージでも feature を強制削除する |
git branch -d branch1 branch2 | 複数のブランチを一度に削除する |
よくあるケース
| Goal | Command |
|---|---|
| マージ済みブランチを削除する | git branch -d old-feature |
| 未マージブランチを強制削除する | git branch -D scratch |
| 今いるブランチを削除する | git switch main の後に git branch -d feature |
| どのブランチがマージ済みか確認する | git branch --merged |
実践例
機能を完成させてマージし、ローカルブランチを片付けます。
| Step | Command | Result |
|---|---|---|
| 1 | git switch main | 削除したいブランチから離れる |
| 2 | git merge feature | 機能のコミットを main に取り込む |
| 3 | git branch -d feature | マージ済みになったブランチを削除する |
Git ローカルブランチ削除に関するよくある質問
git branch -d と -D の違いは何ですか?
-d は安全な削除です。Git はコミットが別のブランチに既にマージされている場合にのみブランチを削除するため、誤って作業を失うことがありません。-D は強制削除(--delete --force の短縮形)で、未マージのコミットがあっても何があってもブランチを削除します。通常は -d を使い、ブランチのコミットを本当に捨てたいと確信しているときだけ -D を使いましょう。今チェックアウトしているブランチを削除するにはどうすればいいですか?
チェックアウト中のブランチは削除できません。まず
git switch main(または git checkout main)で別のブランチに切り替えてから、git branch -d feature を実行します。現在のブランチを削除しようとすると、Git は "Cannot delete branch ... checked out" というエラーを出します。ローカルブランチを削除すると GitHub 上でも削除されますか?
いいえ。
git branch -d はローカルリポジトリからブランチを削除するだけです。リモート(GitHub、GitLab など)上のブランチは、git push origin --delete feature で別途削除するまで残ります。削除したブランチを復元できますか?
最近のものであれば、たいてい可能です。
git reflog を実行してブランチが指していたコミットを見つけ、git branch feature <commit-hash> で再作成します。コミットはすぐにはガベージコレクションされないため、誤って削除したブランチは通常復元できます。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、これらのコマンドをブラウザ内の本物のシェルで実行できます - インストール不要です。体系的に学びたくなったら、Coddy の無料のインタラクティブな Git コースが、最初のコミットからブランチ操作やマージまでステップバイステップで案内します。