Git でマージされたブランチを削除する
Git では、多くのチームメンバーと連携するために分岐が必要です。ブランチは、Git で過去に行われた変更のスナップショットを表します。
Git で新しいブランチを作成するときは、バグを修正したり、新しい機能を追加したりするために行った変更を含めることを目的としています。
Git を使用すると、ブランチを作成するか、コマンドを使用して削除するかにかかわらず、ブランチを簡単に管理できます。ブランチの削除は Git の例外ではありません。
多くの開発者は、マージされたブランチを削除することで Git リポジトリがクリーンになり、既存のブランチへの新しい開発に簡単に移行できることに満足しています。
Git で次のコマンドを使用して、すでにマージされているブランチを削除する方法を見てみましょう。
Git の既存のブランチを表示する
リポジトリ内の既存のブランチの削除を開始する前に、次のコマンドを実行して、ブランチのすべてのリストを確認しましょう。
git branch
すべてのリモートブランチのリストを表示するには、次のコマンドを実行します。
git branch -r
すべてのブランチ(ローカルおよびリモート)のリストを表示するには、次のコマンドを実行します。
git branch -a
これらのコマンドの結果として、ブランチのリストが表示されます。表示されているすべてのブランチを削除する必要はありません。私たちの目標は、すでにマージされているブランチをクリーンアップすることです。
すべてのローカルにマージされたブランチのリストを表示するには、次のコマンドを実行します。
git branch --merged
マージされていないすべてのローカルブランチのリストを表示するには、次のコマンドを実行します。
git branch --no-merged
Git で一度に複数のローカルマージされたブランチを削除する
一度に 1つずつブランチを削除することは、はるかに時間がかかり、適切な作業ではありません。もちろん、私たちは開発者であり、いくつかのコマンドを使用してロボット化できる場合、反復的なタスクを実行することは好みません。
マージされたブランチのリストで見たように、将来削除したくないブランチがいくつかある可能性があります。したがって、この目的のために、マージされたすべてのブランチを削除して、削除したくないブランチを除外するコマンドを使用して、いくつかの引数を追加します。
次のコマンドには、master
ブランチ、および dev が含まれているものは含まれません。
git branch --merged| egrep -v "(^\*|master|main|dev)"
他のブランチをスキップする場合は、次のように名前を追加します。
git branch --merged| egrep -v "(^\*|master|main|dev|skip_branch_name)"
ここで、過去にリポジトリの現在チェックアウトされているブランチにすでにマージされているリポジトリの既存のローカルブランチを削除するとします。その場合、次のコマンドを実行します。
git branch --merged | grep -i -v -E "master|dev"| xargs git branch -d
Git でローカルおよびリモートのマージされたブランチを削除する
マージされたローカルブランチを削除するには、以下に説明するように、オプション -d
を指定して git branch
コマンドを実行します。
git branch -d <branch-name>
ローカルブランチがマージされていない場合は、次のコマンドを実行します。
git branch -D <branch-name>
リモートから削除する場合は、オプション --delete
を指定して git push
コマンドを実行します(ここでは、リモートの名前はオリジンであり、デフォルトです):
git push --delete origin <branch-name>
または、次のコマンドを使用することもできます。
git push origin :<branch-name>
リモートからブランチを削除した後、次のコマンドを使用して、リモートトラッキングブランチを削除するためにプルーニングします。
git remote prune origin
個別に、次のコマンドを使用してリモート追跡ブランチを整理することもできます。
git branch -dr <branch-name>