Git

Gitで不要なローカル・リモート追跡ブランチを削除するコマンドまとめ

Gitで不要なローカル・リモート追跡ブランチを削除するコマンドまとめ

Gitで不要なローカルおよびリモート追跡ブランチを削除するコマンドをまとめます。

あくまでコマンド(おまじない)を書いているだけで、裏側のロジックとか難しいことは書いていません。ご了承ください。

 

では簡単にまとめていきます。

ローカルブランチリモート追跡ブランチの違いがよく分かっていない方は、以下の記事に目を通してみて下さい。

 

Gitで不要なブランチを削除する方法(コマンド)

簡単な例を挙げながら、ブランチを削除する方法をまとめていきます。

Gitブランチの現状

ターミナルでgit brnach -aを打ち込むと、以下のようなブランチ状況になっているとします。

  • master(ローカルブランチ)
  • feature/develop(ローカルブランチ)
  • remotes/origin/master(リモート追跡ブランチ)
  • remotes/origin/feature/develop(リモート追跡ブランチ)

 

そして、開発ブランチであるfeature/developをリモートリポジトリ(GitHub, Bitbucketなど)にプッシュし、プルリクの対応も完了し、リモートのmasterにマージすると同時にリモートブランチ(リモートにあるブランチ)を削除したとします。(プルリク→マージのときに削除するかしないかを選択できます)

 

つまり、ローカルのfeature/developブランチとリモート追跡ブランチremotes/origin/feature/developは完全に用済みで、削除したい状況です。

 

ということで、最終目標はこちら。masterブランチだけを残します。

  • master(ローカルブランチ)
  • remotes/origin/master(リモート追跡ブランチ)

 

では、具体的にどのようなコマンドを打てばこの目標を達成できるのか、以下で紹介していきます。

Gitで不要なリモート追跡ブランチを削除する方法(コマンド)

まずはリモート追跡ブランチ(上記の例でいうとremotes/origin/feature/develop)です。

リモートブランチをすでにマージ・削除している場合、リモート追跡ブランチは以下のおまじないで一括削除できます。(pullとかする必要はなく、リモートでブランチをマージ&削除した時点でこのコマンドが使えます)

git remote prune origin

 

実際に実行してみると、こんな感じになります。

  • master(ローカルブランチ)
  • feature/develop(ローカルブランチ)
  • remotes/origin/master(リモート追跡ブランチ)

 

remotes/origin/feature/develop(不要なリモート追跡ブランチ)が削除できています。

リモートでmasterマージに伴い削除したブランチは、以下のコマンドでもリモート追跡ブランチを削除することができます。

git fetch -p

もしくは

git fetch --prune

 

Gitで不要なローカルブランチを削除する方法(コマンド)

次に、不要なローカルブランチ(feature/develop)を削除しましょう。

以下のコマンドを打ち込みます。feature/developの部分は、任意のブランチ名に書き換え可能です。

git branch -d feature/develop

 

これを実行することで、以下のようになります。

  • master(ローカルブランチ)
  • remotes/origin/master(リモート追跡ブランチ)

 

masterブランチ(ローカルブランチ・リモート追跡ブランチ)だけ残して、不要なブランチを一掃できました。これでスッキリと次の開発に向かえます。

 

git branch -d [ブランチ名]でブランチを消せない場合は、強制削除コマンドgit branch -D [ブランチ名]を使ってみて下さい。

 

Gitで不要なローカルブランチを一括削除する方法(コマンド)

git branch -dでもローカルブランチの削除はできますが、ブランチを一つ一つ削除する必要があるため、大量のローカルブランチがある場合はとてもめんどくさいです。

 

そこで、最後におまけとして、リモートでマージしたローカルブランチを一括削除する方法をご紹介します。

 

こちらです。

以下のコマンドを打つことで、リモートでマージ済みのローカルブランチを一括削除することができます。

git branch --merged|egrep -v '\*|develop|master'|xargs git branch -d

参考:Gitでマージ済みブランチを一括削除

 

develop,masterと指定してあるのが、「削除しないブランチ」です。この辺りは自身の環境に合わせて書き換えて下さい。

 

また、毎回このコマンドを打つのは面倒だと思うので、alias(コマンドのショートカット)を設定しておくことをおすすめします。

まず、cdでルートディレクトリに移動した後、vim .gitconfigで.giconfigを開いて下さい。

関連記事:Vimって何?プログラミング言語?テキストエディタ?【Vimの基礎】

 

開いたら、以下のようにaliasを設定します。

delete-local-merged-branch = !git branch --merged | egrep -v '\\*|master|develop' | xargs git branch -d

参考:Git マージ済みのブランチを一括削除する

 

これにより、git delete-local-merged-branchと打つことで、マージ済みのローカルブランチを一括削除することができます。(コマンドの名前は自由に書き換えて下さい)

 

おわりに:Gitのブランチの削除コマンドまとめ

今回は、Gitで不要なブランチを削除する方法・コマンドをご紹介しました。

最後に今回紹介したコマンドをまとめます。

  • 不要なリモート追跡ブランチを削除 -> git remote prune originもしくはgit fetch -p
  • 不要なローカルブランチを削除 -> git branch -d feature/develop
  • 不要なローカルブランチを一括削除 -> git branch --merged|egrep -v '\*|develop|master'|xargs git branch -d

 

少しでも参考になっていれば幸いです。

 

参考資料【Git関連】

この記事を書くにあたり、主に以下の記事を参考にさせて頂きました。Gitへの理解を深める上で有用な情報が満載なので、ぜひ目を通してみて下さい。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA