PRのmergeの方針
GitHub上ではPRのmergeの仕方に3種類ある
Create a merge commit
Squash and merge
Rebase and merge
これのどれを使うのが良さそうか?という話
#WIP
ここに書いているのが参考になる
develop→mainは、Create a merge commit
topic→developは、
通常は、Squash and merge
logが1本になる
後から個々のcommitに戻れない
代わりにtopicの中は汚くても良い
試行錯誤できる
PRが大きくなりすぎた場合は、Rebase and merge
logが1本になる
後から個々のcommitに戻れる
何がトレードオフになっているかと言うと、以下の2つ
topic branchの中で試行錯誤するが、develop上に意味不明なcommitを残したくない
過去のcommitを細かく見返したい
前者を取ったのがsquashで、後者を取るのがrebaseの方
理想を考えれば、
topicの中で試行錯誤したい
しかし、PRを出す段階ではある程度整形されたcommit logを持つbranchを提出
code reviewerも見やすい
それをRebase and mergeで、そのまま残す
だと思うんだよなmrsekut.icon
理想的にはあまりsquashしたくないmrsekut.icon
squashしちゃうと、後からgit bisectする時などに障壁になる
1つのcommitが大きいので、その中でどこでバグが入り込んだのかわからない
1ファイルのlogを見返した時に、意図が不明瞭になりやすい
だから、求められているのは
一度汚く作ったcommit logを、簡単に、キレイなcommit logに作り変える作業、なんだよなmrsekut.icon
rebaseやfixupを駆使するか