問題
feature-branch-a
から生やした feature-branch-b
で開発中に、feature-branch-a
が main
にマージされると feature-branch-b
がmain
とコンフリクトする。
特にSquash Mergeを使っていると起こる
解決方法
自分のローカルに feature-branch-a
が残っていれば、以下の用にすることで、feature-branch-a
とfeature-branch-b
の差分をorigin/main
に乗せることができる。
g rebase --onto origin/main feature-branch-a feature-branch-b
その他
feature branchでなくても、自分が作業していたPRをマージした後に、同じbranch上で続けて作業コミットを載せてしまい、これもPR作成時にコンフリクトが発生する。
この場合は上のやり方をブランチで見ていると修正方法がわからなくなるが、このケースは以下のようにすれば解決できる。
g rebase --onto origin/main <すでにマージされ済みの最新のCommit> my-branch
解釈としては、以下のように
「1つ目指定したcommit or branch
と2つ目指定したcommit or branch
の差分をorigin/main
に乗せる」とおぼえておけば迷わなくなる
g rebase --onto origin/main <すでにマージされ済みの最新のCommit> <自分の作業しているbranch or 載せたい最新のCommit>