2020-05-24

hubコマンドでPRをいい感じにまとめる

近頃dependabotなどを利用してパッケージのバージョンアップを自動化しているチームも多いと思いますが
PRがパッケージ毎に立つため、1つ1つマージするとCIのクレジットを大量に消費してしまうので
節約の為にもまとめてマージしたいところです

しかも、ブランチを切って git merge --no-ff origin/XXX のようにマージしたPRを立てても
元のPRは自分で閉じる必要があるので非常に面倒臭い

そこでGitHubが提供しているコマンドラインツールの hub を使うことで
いい感じにまとめて、いい感じに旧PRをクローズすることができるようになります

入れて使う

brew install hub で入れる

hub merge https://github.com/XXXX/XXXX/pull/1234 でPRをマージしていく

まとめたPRをマージすると、取り込んだPRも全て閉じられる

便利!

yarn.lockにコンフリクトが発生したときは

普通にyarnに解決させる

コンフリクトすると以下のようなメッセージが出る

hub merge https://github.com/XXX/XXX/pull/1234

From github.com:XXX/XXX
 * branch                refs/pull/1234/head -> FETCH_HEAD
Auto-merging yarn.lock
CONFLICT (content): Merge conflict in yarn.lock
Automatic merge failed; fix conflicts and then commit the result.

このとき自分で yarn.lock を触らずに yarn を実行する
(yarn.lock にあるコンフリメッセージも触らずにそのまま)
すると info Merge conflict detected in yarn.lock and successfully merged. のようなメッセージが表示され、勝手にコンフリクトが解消される

まとめると

  1. hub merge 〜 の実行
  2. (コンフリクトする)
  3. yarn の実行
  4. git add . の実行
  5. git commit の実行
  6. pushして完了

賢い〜