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.
最終更新: 2016/3/8