Gitの小技
あるブランチがマージ済みかどうか、の改善
一昨日かいた「20240325 gitあれこれ、プロンプト、ブランチへのpush禁止、aliasに引数 #Git - Qiita」、このエイリアスは大変無駄がおおかった
git branch --merged
をつかうともっと短い
in = "!git branch --merged | grep $1 >>/dev/null && echo $1 is merged. || echo $1 is NOT merged. #"
今いるブランチ名取得
git rev-parse --abbrev-ref HEAD
alias.now
でエイリアス作っておくと楽ちん
マージ済みローカル/リモートブランチを一括削除
うえで作ったalias.now
を再利用
ローカルブランチの一括削除
del-in = "!for b in $(git branch --merged | grep -v $(git now)); do git branch -d $b; done #"
リモートブランチの一括削除(引数にリモートリポジトリをとる)
del-remote-in = "!if [ -z \"$1\" ]; then repo=origin;else repo=$1; fi; for b in $(git branch -a --merged | grep -v $(git now) | grep remotes | cut -d'/' -f3) ; do git push $repo :$b; done #"
これ、最初 if [[ -z $1 ]]
とやっていたが、[[: not found
というエラーが出て困っていた
じつはif [[...]]
の書き方はbashの記法で、ここではif [...]
と書く必要がある
参考:shell - String comparison in bash. [[: not found - Stack Overflow
もっと短く書けないのかな