最近以下のような記事を目にすることがあり、ちょうど自分もsquash mergeの環境でひとつ問題を抱えていたので、その話を自分のメモ代わりに書きたくなった。
- Git の Squash マージをやめた話 - Mobile Factory Tech Blog
- squash and mergeしか使ってないけど全く困ってない – Jun Mukai's blog
問題とは、上にある記事のcascading PRs
の話で、feature1 -> feature2 というようにbranchを派生して作った場合に、feature1 をmainにマージした後に作業ブランチを feature2 にして git rebase main すると、必ずコンフリクトが発生するので悩んでいた、ということ。
解決策としては、以下にあるようにgit rebase --onto main <last commit on feature1> feature2
をすればいいらしい。「らしい」というのはまだ自分は試してないけど、同僚がこれで「うまくいけた」と言っていたので。
もしくはJun Mukai's blogに書いてあるような以下の方法でもいいのかもしれない。そういえば git rebase --skip
って使ったことなかったな。
PR1に由来するコンフリクトは自分にとっては自明だし、ほとんどの場合にはgit rebase –skipするだけだ。