[解決済み] ローカルのgitブランチをすべて削除
2022-03-20 08:44:04
質問
私は開発プロセスに従って、新しい機能やストーリーカードごとに新しいローカルブランチを作成しています。終了したら、そのブランチを master にマージして、プッシュします。
怠け癖や忘れ癖が重なると、大量のローカルブランチができ、そのうちのいくつかは(spikesのように)マージされていない可能性があります。
すべてのローカルブランチをリストアップする方法と、1つのブランチを削除する方法は知っていますが、すべてのローカルブランチを削除できるgitコマンドはないでしょうか?
以下は
git branch --merged
コマンドを実行します。
user@machine:~/projects/application[master]$ git branch --merged
STORY-123-Short-Description
STORY-456-Another-Description
STORY-789-Blah-Blah
* master
でリストされたブランチを削除しようとすると、すべて
grep -v \*
(以下の答えのように)エラーになります。
error: branch 'STORY-123-Short-Description' not found.
error: branch 'STORY-456-Another-Description' not found.
error: branch 'STORY-789-Blah-Blah' not found.
使っています。
git 1.7.4.1
ウブントゥ10.04
GNU bash, バージョン 4.1.5(1)-release
GNU grep 2.5.4
解決方法は?
git branch -d' サブコマンドは、複数のブランチを削除することができます。 というわけで、@sblom さんの回答を簡略化しつつ、重要な xargs を追加します。
git branch -D `git branch --merged | grep -v \* | xargs`
または、さらに簡略化して
git branch --merged | grep -v \* | xargs git branch -D
重要なのは、@AndrewC が指摘しているように
git branch
をスクリプティングに使用することは推奨されません。 それを避けるには、次のようなものを使います。
git for-each-ref --format '%(refname:short)' refs/heads | grep -v "master\|main" | xargs git branch -D
削除には注意が必要です
$ mkdir br
$ cd br; git init
Initialized empty Git repository in /Users/ebg/test/br/.git/
$ touch README; git add README; git commit -m 'First commit'
[master (root-commit) 1d738b5] First commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
$ git branch Story-123-a
$ git branch Story-123-b
$ git branch Story-123-c
$ git branch --merged
Story-123-a
Story-123-b
Story-123-c
* master
$ git branch --merged | grep -v \* | xargs
Story-123-a Story-123-b Story-123-c
$ git branch --merged | grep -v \* | xargs git branch -D
Deleted branch Story-123-a (was 1d738b5).
Deleted branch Story-123-b (was 1d738b5).
Deleted branch Story-123-c (was 1d738b5).
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み] Git ですべてのリモートブランチをクローンする方法
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルのGitブランチの名前を変更するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Git, fatal: リモートエンドが予期せずハングアップしました。
-
[解決済み】git-mergeの-dry-runオプションはありますか?
-
[解決済み】Githubエンタープライズ - リモート。Git の操作でパスワード認証が利用できない
-
[解決済み】マージが終了していません(MERGE_HEADは存在します)。
-
[解決済み] リモートから<branch name>とマージするように構成が指定されていますが、そのような参照は取得されませんでしたか?
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] GitのFETCH_HEADとはどういう意味ですか?
-
[解決済み] リモートにないトラッキングブランチを削除
-
[解決済み] git remote prune、git prune、git fetch --pruneなどの違いは何ですか?
-
[解決済み] Visual Studio Code - GitHubで削除されたブランチがVS Codeに表示されたままになっているのを削除しますか?