とある開発現場で、GitHub Flow をベースとしたワークフローで開発をしていました。
Pull Request を作った時に、コミットをある程度の意味のある内容でまとめていましたが、まったくまとめないという方法もあるようなので、ちょっと調べました。
まとめない事例としては、
コミット1: add file
コミット2: fix xxx
コミット3: fix yyy
コミット4: fix yyy
コミット5: test
コミット6: test2
コミット7: revert test
コミット8: fix yyy2
・・・
※ビルドに失敗したり、書き間違いを元に戻す内容とかも1コミットのままだったり
結論
個人的には、これからも適切なコミットにまとめる、として、
他人に対しては、その個人の方針を受け入れる。
※PRを受ける側が見やすい程度にはまとめた方がよいかも、ということは言うかもしれないですが。
ChatGPTの回答から抜粋:
「最終的な判断はプロジェクトの要件やチームのワークフローに依存します。コミットのまとめ方は、開発者間で一貫性があり、プロジェクトの進行が効率的であることが重要」
調べた情報整理
ググる
「適切なcommitにまとめる」、「意味のある単位で纏めた上で」など、自分の意見に近いのが多いかなと思います。
参考
https://zenn.dev/chot/articles/a28ee73d60fd1e
https://note.com/lexues/n/ne3293fcb505a
以下のリンクはまとめない派の記事
https://qiita.com/gogotanaka/items/8c55f69120965b077737
ただ、この内容、「多くのcontributorはgit rebase -i とgit commit -pを用いて修正をしている 」ことが前提での話で、その上で、残しているのは無闇にまとめるというべきではないといった感じでした。
ChatGPT
Q:
GitHubでPull Request作成時にコミットはまとめるべきか。どのようなまとめ方をした方がよいかメリット、デメリットを踏まえて述べてください。
A:
GitHubでPull Request(プルリクエスト)を作成する際に、コミットをまとめるか分けるかは、プロジェクトのワークフローやチームの好みに依存します。以下に、コミットをまとめるメリットとデメリット、およびまとめる際の一般的なアプローチを説明します。
コミットをまとめるメリット:
クリーンな履歴: コミットをまとめることで、履歴が整理され、理解しやすくなります。バグ修正や機能追加のコードが一連の論理的な変更としてまとまり、他の開発者がコードをレビューしやすくなります。
バックトラッキングが容易: コミットをまとめると、必要な場合に以前の変更セットに簡単に戻ることができます。特定の機能やバグ修正に関連する変更を一つのまとまりにすることで、トラブルシューティングがしやすくなります。
履歴がコンパクト: コミットをまとめることで、リポジトリの履歴が膨大になるのを防ぎ、リポジトリのサイズを節約できます。
コミットをまとめるデメリット:
情報の欠落: コミットをまとめすぎると、個々の変更セットの詳細が失われ、履歴から直接変更内容を理解するのが難しくなることがあります。
レビューの難化: 多くの変更を一つのコミットにまとめると、レビュアーが全体の変更を理解するのが難しくなり、レビューが遅れることがあります。
一般的なアプローチは、コミットをまとめるということを適切にバランスさせることです。以下は一般的なガイドラインです。
関連する変更をまとめる: 同じ機能やバグ修正に関連する変更をまとめることが推奨されます。これにより、変更のコンテキストが明確になり、レビューがしやすくなります。
コミットメッセージを明確にする: 各コミットメッセージに変更の目的や詳細を記述し、履歴から直接コードを理解できるようにしましょう。
コミットの頻度を調整: 小さな変更には小さなコミットを、大きな変更には大きなコミットを作成することを検討します。コードの変更が論理的に一つのまとまりになっていることが重要です。
リポジトリのポリシーに従う: プロジェクトやチームによっては、特定のコミットスタイルやまとめ方を指定するポリシーがあるかもしれません。これに従うことが重要です。
最終的な判断はプロジェクトの要件やチームのワークフローに依存します。コミットのまとめ方は、開発者間で一貫性があり、プロジェクトの進行が効率的であることが重要
概ね納得できる内容でした。
「コミットをまとめるデメリット」の「レビューの難化」は、まとめ方がよくない結果起きる事象と思いました。むしろコミットをまとめない方針の方が難化しやすいと思われます。
ただレビューアは、PR全体の内容を見ると思うのでそもそも考慮しなくてもよさそうな気もします。
コメント