質問: GitHubで、あるOSSに対してプルリクエストを行った結果、レビュー指摘を受けた場合の適切な指摘反映方法を教えていただきたいです。ただし、最終的にプルリクエストは1コミットにまとめないといけないとします(おそらく、どのOSSでもそうだと思いますが)。 私の方法では指摘をローカルのソースコードに反映して、以下を実施しています。 ``` $ git commit -am "レビュー指摘の反映" $ git rebase -i HEAD~2 ・・・squashで2つのコミットをまとめる(上記コミットメッセージは削除)・・・ $ git push -f origin [プルリクのためにつくったブランチ] ``` この場合、プルリクエストは1コミットにまとめられますが、レビュー指摘前のソースコードが完全になくなってしまうので、レビュアーは適切にレビュー指摘を反映したのか判断しづらいと思います。 レビュー指摘前後の変更内容が確認できて、かつ最終的なプルリクエストを1コミットにまとめることはできるのでしょうか?
回答: 指摘事項が単純なタイプミスなど、変更点が軽微なものであれば `rebase` でまとめてしまうのもありかもしれませんが、そうでなければ「プルリクエストは必ず1コミットにまとめる」は必ずしも正しいとは言えません。 最終的にマージでどう取り込むかはオーナー次第ですが、コミットは "意味のある" 単位で分けるべきです。(今回の例なら、レビュー"前"と"後") なお、GitHubのヘルプページには以下のような注意書きがありました。 > > プルリクエストにコミットをプッシュする場合、フォースプッシュはしないでください。 フォースプッシュをすると、プルリクエストが壊れることがあります。 > > > `rebase` を行うと新しいコミットハッシュが生成されるためでしょう。