いつも作業ブランチごっそりマージしちゃうけど、今回は、コミットを1つにまとめてmasterにマージした後、cherry-pickでリリースブランチにマージしてねっていう現場に来たのでその手順を調べたメモ

前提

作業ブランチ(個人): sagyou
開発ブランチ(共有): master
リリースブランチ: release

git merge –squash: 作業ブランチの内容を1つにまとめてmasterにマージ

1
2
3
$ git checkout master
$ git merge --squash sagyou
$ git commit

git cherry-pick: リリースブランチに持ってく

1
2
$ git checkout release
$ git cherry-pick [先にsquashでmasterにマージしたコミットID]

git merge –squash したブランチの削除には–forceオプションが必要(2018/03/20 追記)

git merge --squashした後、用済みになったブランチを削除しようとすると、「まだ完全にマージされていません」みたいに怒られるので、-Dにするか--forceオプションをつける必要があります

1
2
3
$ git branch -d sagyou
error: The branch 'sagyou' is not fully merged.
If you are sure you want to delete it, run 'git branch -D sagyou'.

なんで怒られるのか理由を知りたくてぐぐってみたら、なんか色々あるようだったのでとりあえずメモ