1. ホーム
  2. git

[解決済み] マージされたGitブランチをすべて削除するにはどうすればよいですか?

2022-03-18 04:16:21

質問

Gitのブランチをたくさん持っています。すでにマージされたブランチはどのように削除すればよいのですか?ひとつひとつ削除するのではなく、すべてを簡単に削除する方法はありますか?

解決方法を教えてください。

UPDATEしてください。

ワークフローに先祖の可能性がある場合、master や dev などの他のブランチを除外するために追加することができます。通常、私は "sprint-start" タグから分岐させ、master、dev、qa は祖先にはなりません。

まず、リモートでマージされたローカル追跡ブランチをリストアップします(他の回答で提案されているように、リモート追跡ブランチをすべてリストアップするために -r フラグを使用することを考慮してもよいでしょう)。

git branch --merged

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

git branch --merged| egrep -v "(^\*|master|main|dev)"

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

git branch --merged| egrep -v "(^\*|master|main|dev|skip_branch_name)"

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

git branch --merged | egrep -v "(^\*|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