すでにマージされているブランチを削除するにはどうすればいいですか? 各ブランチを 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