Git 内のすべてのローカルブランチを削除する
-
master
を除く Git のすべてのローカルブランチを削除するための詳細なスクリプト -
Git の
-d
オプションを使用して、マージされたブランチのみを削除するようにスクリプトを変更する - より簡単なスクリプトを使用して、Git 内のすべてのローカルブランチを削除する
-
スクリプトを変更して、Git の
master-prod
のようなmaster
に似た名前のローカルブランチを削除する - Git 内のすべてのローカルブランチを削除するための短いスクリプト
- Git 内のすべてのローカルブランチを削除するための 1 行のハード削除コマンド
古いローカルブランチはローカルリポジトリを乱雑にしますが、それ以上の価値はありません。このチュートリアルを使用すると、すべてのローカルブランチを一度に削除できます。
このタスクのスクリプトを作成するには、grep
、xargs
、for-each-ref
などのコマンドを使用します。さまざまなユースケースのさまざまなオプションを示します。
また、チュートリアルの最後に、すべてのローカルブランチを削除するための 1 行のクイックハックを提供します。
master
を除く Git のすべてのローカルブランチを削除するための詳細なスクリプト
次のスクリプトを記述して、master
ブランチを除くすべてのローカルブランチを Git で削除します。
git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -D
このスクリプトは、マージされていないブランチを含む、master
ブランチを除くすべてのローカルブランチを削除します。
このスクリプトを分解して、どのように機能するかを見てみましょう。
-
for-each-ref
は、リポジトリ内のすべての参照を繰り返し処理します。format
文字列'%refname:short'
は、反復可能オブジェクトから短い ref 名を抽出し、refs/heads
はそれらのheads
を指します。パイプ
|
を使用して、for-each-ref
の出力をgrep
コマンドに渡します。オペレーター。 -
grep
コマンドは、渡された参照ヘッドを検索して、式文字列master\|main\|develop
と照合します。これは、master
ブランチのさまざまな名前をカバーしています-それらにmain
またはdevelop
という名前を付けている場合があります。 -
grep
コマンドの-v
オプションは、逆選択用です。したがって、ここでは、式master\|main\|develop
に一致しないブランチのみを選択します。基本的に、master
を除くすべてのローカルブランチを選択します。 -
最後に、
xargs
コマンドは、これらの選択されたすべてのブランチを取得し、それらを引数としてコマンドgit branch -D
に渡します。git branch -D
は、引数として渡されたすべてのブランチを強制的に削除するコマンドです。
Git の -d
オプションを使用して、マージされたブランチのみを削除するようにスクリプトを変更する
上記のスクリプトを変更して、マージされたブランチのみを削除できます。最後の -D
オプションを -d
オプションに置き換えます。
-d
はソフト削除オプションであり、マージされたブランチのみを削除します。
git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main\|develop" |
xargs git branch -d
first_branch
はマージされていますが、second_branch
はマージされていません。
変更したスクリプトは、マージされた first_branch
のみを削除し、マージされていない second_branch
を残します。
より簡単なスクリプトを使用して、Git 内のすべてのローカルブランチを削除する
上記のスクリプトが複雑すぎてやり過ぎだと感じる人もいるかもしれません。より簡単なスクリプトを使用して同じタスクを実行できます。
git branch | grep -v "master\|main\|develop" | xargs git branch -D
このスクリプトは、複雑な for-each-ref
を単純な git branch
コマンドに置き換えます。
Git はスクリプトで git ブランチ
を使用することを推奨していないことに注意してください。ただし、迅速な解決策として、ベストプラクティスから逸脱する場合があります。
スクリプトを変更して、Git の master-prod
のような master
に似た名前のローカルブランチを削除する
場合によっては、リポジトリに master
に似た名前のブランチが含まれていることがあります。たとえば、一部のブランチには、master-prod
や master-draft
などの名前を付けることができます。
この機能を実現するために、スクリプトの正規表現を"master\|main\|develop"
から"master$\|main$\|develop$"
に変更できます。
git branch | grep -v "master$\|main$\|develop$" | xargs git branch -D
Git 内のすべてのローカルブランチを削除するための短いスクリプト
巧妙な正規表現を grep
に渡して、スクリプトをさらに短くすることができます。
git checkout master
git branch | grep -v "^*" |xargs git branch -D
式"^*"
は、現在のブランチ(*
)で始まるすべてのブランチ(^
)を意味します。最初に git checkout master
を実行したので、現在のブランチは master
です。
したがって、-v "^*"
は現在のブランチである master
を除外し、他のすべてのローカルブランチを削除します。
Git 内のすべてのローカルブランチを削除するための 1 行のハード削除コマンド
最後に、約束どおり、Git 内のすべてのローカルブランチを削除するための 1 行のハード削除コマンドを示します。
git branch -D $(git branch)
このコマンドは、現在のブランチを除くすべてのブランチを削除します。