GitHub上でブランチを削除しても、「git fetch」や「git pull」では更新されても、ローカル上のリモートブランチ情報は削除されず、残ったままになります。Git環境を綺麗に保つために必要なコマンドを自己流でまとめました。
【準備】まずローカルブランチの確認
git branch
削除するブランチ名を確認しておきます。
このとき、対象がカレントブランチ(現在のブランチ)になっていると削除ができないので移動をします。
ブランチの移動
git checkout master
このとき移動するブランチは何でも良いです。
ローカルのGit環境でブランチを削除する
git branch -d feature/xxxxxx
git branch -D feature/xxxxxx
これでローカルのブランチは削除ができます。
もしmergeしていなかった場合は、警告が出るので下の「-D」オプションを付けて強制削除ができます。
ローカルにあるリモートブランチを確認する
git branch -a
このコマンド叩くと、リモートに「origin/feature/xxxxxx」がまだ残っていることに気付きます。
【本編】ローカルに残ったリモートブランチを削除する
git fetch --prune
git pull --prune
上記のどちらかのコマンドに「--prune」オプションを付けることでローカルに残ったリモートブランチ情報を削除することができます。
ローカルのリモートブランチが削除されていることを確認する。
git branch -a
再度、上記コマンドを叩いてローカルのリモートブランチが削除されていることを確認します。
何故こんなことをするのかというと、開発が進むにつれて過去と同名のブランチ名を付けてしまったり、プレフィックス(接頭辞)が同じブランチを作成しようとした際に、エラーに遭遇することを避けるためです。
参考文献
- いちばんやさしいGit&GitHuBの教本(著 横田紋奈、宇賀神みずき)
- GitHub実践入門(著 大塚弘記)
- 独習Git(著 Rick Umali)
Git&GitHubに関して色々、読んだのですが「--prune」オプションについてはあまり言及されていませんでした。やはり公式のリファレンスを読むことが遠回りに見えて近道だと感じました。