Git でローカル・リモートのブランチを削除する方法 (git branch -d)

Git では git branch で非常に気軽にブランチを作成することができます。同様にgit merge によって master などの他のブランチにマージされて不要になったブランチは簡単に削除することができます。

ローカルのブランチを削除する

git branch -d <branch_name>
  • git branch-d (--delete)オプションを付けて実行するとブランチが削除されます。
  • ブランチ名は省略不可
  • 現在のブランチは削除できません

    • その場合error: Cannot delete the branch 'branch_name' which you are currently on.のようなエラーが表示されます。
  • ただし削除されるブランチは他のブランチにマージされていなければなりません

    • 削除しようとしているブランチがマージされていないとerror: The branch 'mydev' is not fully merged.のようなエラーが表示されます。
    • 厳密には削除しようとしているブランチが現在のブランチにマージされているか、そのブランチのupstreamにマージされている (おおまかに言えばgit pushされている)必要があります。
    • それでも強制的にブランチを削除したい場合は git branch -D <branch_name> (あるいはgit branch --delete --force <branch_name>)を実行して下さい。

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

リモートレポジトリからブランチを削除するにはgit pushを使います。

git push origin --delete <branch_name>

あるいは

git push origin :<branch_name>

--delete が覚えやすいですが、これは:<branch_name>のエイリアスです。 git push<refspec>の項に Pushing an empty <src> allows you to delete the <dst> ref from the remote repository. とあるように、git push:の前を空にするとリモートレポジトリから指定したブランチが削除されます。ローカルのブランチをあらかじめ削除しておく必要はありません。

ローカルブランチを削除していない、あるいはリモートブランチが他の人によって削除されたなどの理由で、削除されたリモートレポジトリのブランチをトラックしているトラッキングブランチが存在する場合には、そのブランチでgit pullを実行しようとして削除されたブランチと pull しようとすると以下の様なエラーが表示されます。

Your configuration specifies to merge with the ref '<branch_name>'
from the remote, but no such ref was fetched.
最終更新: 3/8/2016