ベースブランチってどこ向け?


タイトルの通り、main(default)ではないブランチから派生したブランチのPRを出すのに謎の抵抗感があったのですが、githubくんがかなりよしなにしてくれることに気がついたのでその挙動を備忘録として書いておきます。
(知っている人にとってはめちゃくちゃ当たり前体操な内容だと思います)

TL;DR

main(default)ブランチから切ったブランチAから更に切ったブランチA2のPRを出すときは、難しいこと考えずにブランチA向けにPR出すのが良き。

どういうこと?

たとえば、チームメンバーがmainから派生したbranchAで作業していたとします。
branchAに乗っている機能が前提の作業をするために、branchAからbranchA2を切りました。
branchA2の作業が終わりPRを出したいのですが、branchAはまだ細かい部分のPR中でmainにはマージされていません。

さて、このbranchA2のPRの向き先はmainかbranchAか、という話です。

今こうして自分で書いていても「いやbranchA向けだろ……」と思うのですが(main向けにPRを出すと、branchAのコミットもPRに乗ってしまうためかなり見づらいことになるので)、
「branchA向けに出したとして、branchAがmainにマージされたらbranchA向けのPRはどういう扱いになるんだ……? mainでrebase or mergeしてmain向けに直さないといけないのか?」と漠然と面倒臭がっていました。今までは。

この「PRのbaseとなっているブランチがマージされていった後にデフォルトのブランチ向けのPRに直す」作業、githubが勝手にやってくれます。

実例

(ほとんどmainにしかpushしていないprivateリポジトリで実験)

test-branch-Aというブランチををmainから切ってPRを出したとします。
github_merge_1

その後、test-branch-Aから切ったtest-branch-A2のPRをtest-branch-A向けに出します。
(PR作成時にbaseが選べるし、作成した後もEDITボタンから変更できます)
github_merge_3

この状態でtest-branch-AのPRがマージされると、

github_merge_4

Base automatically changed from test-branch-A to mainというログが残って、test-branch-A2のPRがmain向けに自動修正されます。
めちゃくちゃ便利だ……。もっと早く気が付きたかった。


PR出した後は、ベースとなるブランチ自体に先んじてマージしちゃうか、そっちの作業を待ってからmainにマージするか、どちらにせよベースとなるブランチで作業している方とのコミュニケーションは必要ですが、とりあえず派生元にPR出しておけばあんまり困ることは(今のところの経験上)ないです。

派生PR、もう怖くない!な備忘録でした。