0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

main/master以外の不要なローカルブランチを掃除するワンライナー

Last updated at Posted at 2024-12-31

やりたいこと

ローカルブランチが溜まっているので掃除したいときがあります。

$ git branch
  foo
  fuga
  hoge
* main
  piyo

こんな感じになっていたら、mainブランチと必要なブランチだけを残してスッキリしたい…また、場合によってはmainブランチじゃなくてmasterブランチがデフォルトになっていることもあるので、main・masterどちらにも対応したワンライナーを書きたいなと思いました。

作成したワンライナー

git branch | grep -v -E "main|master" | awk '{print $NF}' | xargs git branch -d

このワンライナーを実行すると、ローカルブランチがmain(master)ブランチとマージができていないブランチだけが残ります。もし、fooブランチをマージしていない場合は、以下のようにエラーが発生します。

$ git branch | grep -v -E "main|master" | awk '{print $NF}' | xargs git branch -d
error: the branch 'foo' is not fully merged
hint: If you are sure you want to delete it, run 'git branch -D foo'
hint: Disable this message with "git config advice.forceDeleteBranch false"
Deleted branch fuga (was 97ef981).
Deleted branch hoge (was 97ef981).
Deleted branch piyo (was 97ef981).

$ git branch
  foo
* main

aliasを設定するなどとして、ピッと呼び出せるようにすると便利かなと思います。

ワンライナーの解説

git branch | grep -v -E "main|master" | awk '{print $NF}' | xargs git branch -dを一段階ずつ分解して、コマンドが何をしているかをみていきます。

git branch

ローカルブランチを表示します。

$ git branch
  fuga
  hoge
* main
  piyo

git branch | grep -v -E "main|master"

git branchで出力したローカルブランチの一覧をパイプで受け取り、mainとmaster以外のブランチのみを表示します。

$ git branch
  fuga
  hoge
* main

$ git branch | grep -v -E "main|master"
  fuga
  hoge

grepコマンドについて

grep -Eでは、拡張正規表現を使用して、結果の抽出ができます。

$ git branch
  fuga
  hoge
* main

$ git branch | grep -E "main|master"
* main

-v オプションをつけると、条件に一致しない行を抽出できます。

$ git branch | grep -v -E "main|master"
  fuga
  hoge

git branch | grep -v -E "main|master" | awk '{print $NF}'

awk '{print $NF}'で各行の最終フィールドを表示します。

$ git branch | grep -v -E "main|master"
  fix-readme
  fuga
  hoge
$ git branch | grep -v -E "main|master" | awk '{print $NF}'
fix-readme
fuga
hoge

git branch | grep -v -E "main|master" | awk '{print $NF}' | xargs git branch -d

xargsを使用してgit branch -dコマンドに引数として抽出済みのブランチを渡します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?