LoginSignup
4
0

More than 5 years have passed since last update.

GithubでSquash Mergeされたブランチがローカルでbranch --mergedしても出てこない問題について

Last updated at Posted at 2016-07-04

※ 2016/07/09追記
以下の方法だと複数人で開発しているときに、diffが0にならないケースがあって当然といえば当然なのですが、それだと動かない。
※ 追記終わり

Pull Requestでsquash mergeすると、手元でfetch --pruneしてpullしてbranch --mergedしても、mergeされたブランチとしてローカルのブランチが出てこない。

$ git checkout -b feature/hoge

...add...commit...

$ git push origin feature/hoge

...github上でdevelopブランチにsquash mergeされ削除される...

$ git checkout develop
$ git fetch --prune
$ git pull origin develop
$ git branch --merged

_人人人人人人人人人人人人人人_
> feature/hogeが出てこない <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄

これが出てこないとどうなるかというと、remote上でmergeされて削除されたブランチをローカルで一括削除することができなくなる。

今まで以下のようなコマンドでしのでいたのだけど、これでは一々ローカルのブランチを指定して削除しないといけない。

.gitconfig
  rmm = !git branch --merged | grep -v master | grep -v develop | grep -v \\* | xargs -I % git branch -d %

面倒くさいので、一旦自分なら問題ないという前提で以下のコマンドに変更した。

.gitconfig
  rmm = !git branch | grep -vE '(master|develop)' | cut -c3- | xargs -L1 sh -c '[ `git diff $1 | wc -l` -eq 0 ] && git branch -D $1' sh
  • ブランチごとのdiffの行数を見て0なら削除する
  • developとmasterブランチは絶対消さない
  • 自分が上記コマンドを叩くのはdevelopかmasterブランチでのみ
  • コミットしてないブランチを作成した直後はこのコマンドを叩かない(まあ消えても問題ない)

一旦これでOK!

4
0
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
4
0