マージされたすべての Git ブランチを削除するにはどうすればいいですか? 質問する

マージされたすべての Git ブランチを削除するにはどうすればいいですか? 質問する

すでにマージされているブランチを削除するにはどうすればいいですか? 各ブランチを 1 つずつ削除するのではなく、一度にすべて削除できますか?

ベストアンサー1

注: ワークフローに master や dev などの他のブランチが祖先として存在する場合は、それらを除外するブランチを追加できます。通常、私は「sprint-start」タグから分岐しますが、master、dev、qa は祖先ではありません。


まず、リモートにマージされたローカル追跡ブランチを一覧表示します (-rフラグを使用してすべてのリモート追跡ブランチを一覧表示することを検討してください)。

git branch --merged

削除したくないブランチがいくつかあるかもしれません。master やdevelop など、削除したくない重要なブランチをスキップするために、いくつかの引数を追加できます。次のコマンドは、master ブランチと、その中に dev が含まれるものをすべてスキップします。

git branch --merged| grep -Ev "(^\*|master|main|dev)"

スキップしたい場合は、以下のように egrep コマンドに追加します。ブランチはskip_branch_name削除されません。

git branch --merged| grep -Ev "(^\*|master|main|dev|skip_branch_name)"

現在チェックアウトされているブランチにすでにマージされているすべてのローカル ブランチを削除するには:

git branch --merged | grep -Ev "(^\*|master|main|dev)" | xargs git branch -d

master と dev が祖先である場合は除外されていることがわかります。


マージされたローカル ブランチを削除するには、次のようにします。

git branch -d branchname

マージされていない場合は、次を使用します。

git branch -D branchname

リモートから削除するには、次を使用します。

git push --delete origin branchname

git push origin :branchname    # for really old git

リモートからブランチを削除したら、次のコマンドでリモート追跡ブランチを削除できます。

git remote prune origin

または、他の回答が示唆しているように、次のようにして個々のリモート追跡ブランチを削除します。

git branch -dr branchname

おすすめ記事