Git でのブランチの削除コマンドについてです。
ブランチを削除する Git コマンド
ローカルブランチの削除コマンドから。「git branch -d <ブランチ名>」のオプションで、削除が実行できます。-d は --delete と同義です。
# ローカルブランチを削除(すべて同義)
$ git branch -d
$ git branch --delete
上記のブランチの削除では、上流ブランチが設定してあれば、そこにPUSHされていなかったり、上流ブランチがなければ、ブランチの先頭(HEAD)にマージされていなかったりする場合、エラーがでて削除できません。
例:まだ上流にPUSHされていない場合:
$ git branch -d ブランチ名
warning: not deleting branch 'ブランチ名' that is not yet merged to
'refs/remotes/origin/ブランチ名', even though it is merged to HEAD.
error: The branch 'ブランチ名' is not fully merged.
If you are sure you want to delete it, run 'git branch -D 'ブランチ名'.
これはすなわち、ブランチ削除操作により変更履歴をたどる方法が失われてしまう場合です。(とはいえ、コミットオブジェクト自体は残りますので、git reflog などから参照し、復元することは可能です。Git における「ブランチ」とはコミットへの参照でしかありません)
ブランチ削除を強制するオプション
上記のようなケースでも、不要なことがわかっているブランチは、「-df」または、「-D」オプションを使って、強制的に削除することが可能です。
# マージされていないローカルブランチを強制的に削除(すべて同義)
$ git branch -D
$ git branch -df
$ git branch --delete --force
大文字のDは、--delete --forceのショートハンドというわけですね。
ちなみに未マージのブランチも、そのブランチに「上流ブランチ」がすでに設定してあって、すでにリモートに Push されていれば、警告テキストは表示されますが、「git branch -d 」でも、削除自体は実行できます。
参考:上流ブランチと削除
Git における「上流ブランチ」については、こちらに詳しくまとめました。
マージされていない不要なブランチを探そう!
ちなみに、マージ済み(HEADにつながっている)のブランチと、マージされていないブランチは、それぞれ下記のコマンドで一覧できます。不要なブランチを探すのに役立つでしょう。# マージ済のブランチの一覧
$ git branch --merged
# マージされていないブランチを一覧
$ git branch --no-merged
参考:ブランチの削除に関する記事
Gitブランチ削除、リモートブランチは勝手が違いますので、こちらの記事もどうぞ。
誤った削除操作で、ブランチにアクセスできなくなってしまう事がないように、安全になっているんだね。