Subscribed unsubscribe Subscribe Subscribe

Gitにおけるブランチの削除

ここ最近,上司がローカルブランチを削除する際にgit branch -Dを使っていて、 あれ?git branch -dなのではと思って調べてみる。

ローカルブランチの削除

  • HEAD にマージしたローカルブランチを削除する
$ git branch -d ローカルブランチ名
※HEADにマージされていないコミットが存在する場合はローカルブランチを削除できません
↓
error: The branch 'ローカルブランチ名' is not fully merged.
If you are sure you want to delete it, run 'git branch -D ローカルブランチ名'.

ローカルブランチに消してはいけないコミットが存在することも考えるとgit branch -dが通常実行すべきコマンドだと思った。 他のサイトやGitの本家サイトではgit branch -dを使用するとの記載があった。

  • マージしたかどうかを問わずに削除する
$ git branch -D ローカルブランチ名

こちらは問答無用でローカルブランチを削除したいときに使用するようだ。 もし、マージしていないコミットが不要なコミットのみの場合は使用しても問題無いと思われる。

リモートブランチの削除

  • コマンド1(「:」を使う)
$ git push origin :リモートブランチ名
Password for 'http://XXXXXXXX.co.jp': 
remote: Updating references: 100% (1/1)                                                                                                                                                                                                      
To http://XXXXXXXXX.co.jp/リポジトリ名.git
 - [deleted]         feature/20141217_freeword_search

※ちなみにこちらのコマンドはローカルブランチを削除していない状態で実行しても、
リモートブランチを削除することができます。

※ちなみに「:」の前に何も記載していないのは何もないブランチをリモートブランチにプッシュするという意味です。

  • コマンド2(--deleteを使う)
$ git push --delete http://XXXXXXXX.co.jp/リポジトリ名.git リモートブランチ名
Password for 'http://XXXXXXXX.co.jp': 
remote: Updating references: 100% (1/1)                                                                                                                                                                                                      
To http://XXXXXXXXX.co.jp/リポジトリ名.git
 - [deleted]         リモートブランチ名

※リモートブランチ名はorigin/リモートブランチ名でも構いません

リモートのブランチを削除しても、refs/remotes/origin/リモートブランチ名が消えない場合

  • コマンド
$ git remote prune origin
Pruning origin
URL: http://XXXXXXX.co.jp/リポジトリ名.git
 * [pruned] origin/モートブランチ名