Gitの小ネタおれおれAdvent Calendar 2022 – 12 日目
気が付くとブランチがいっぱいになってたりしますがマージ済みのブランチだけ表示することができます。
マージ済みブランチを表示
git branch
でブランチ一覧が出てきますが --merged
オプションを与えると今いるコミット位置に連なるブランチだけに絞り込んで表示することができます。
今いるブランチも含まれている点に注意。
$ git branch --merged
anotherFeature
greatFeature
* main
以下 git branch --help
より。
–merged [<commit>]
Only list branches whose tips are reachable from the specified commit (HEAD if not specified). Implies
--list
, incompatible with--no-merged
.
削除
こう。
$ git branch --delete $(git branch --no-color --merged | grep -v "*" | tr "\n" " ")
Deleted branch anotherFeature (was db7d011).
Deleted branch greatFeature (was 7317aad).
順に説明します。
$(…)
で実行結果を渡す
JavaScript の `Hello ${name}`
みたいなやつです。
パイプ |
で繋げられなかったのでこっち使て埋め込みました。
--no-color
なんか制御文字あってこんな↓エラー出たんで除きます。色をリセットするやつ \e[m
だな。
error: branch 'greatFeature?[m' not found.
今いるブランチを除く
例えば master
にいるときは必ずそれが一覧に出てきちゃうんだけどそれは削除できないので、除く必要があります。
Git 側では特にできなさそうなので、別途 grep
へ渡します。(Windows だと動かない気がします。) -v
あるいは --invert-match
でマッチしないものになります。
$ git b --merged | grep -v "*"
greatFeature
anotherFeature
tr
で一行にまとめる
前節と同じく別途 tr
(translate) へ渡します。改行文字 "\n"
を空白 " "
へ置換しています。
$ git branch --merged | tr "\n" " "
greatFeature * main $
リモートブランチも表示
--remote
や --all
でサーバー側のブランチが出てきます。--merged
と併用できますが、その場合先に指定する必要があります。
だめな例。
$ git branch --merged --all
fatal: malformed object name --all
大丈夫な例。
$ git branch --all --merged
greatFeature
* main
remotes/origin/main
おしまい
こんな風にやりたい。(できない。)
$ git branch --delete --merged