頻繁に、小さく、意味のあるコミットを行う最も重要な理由は、コードの履歴の理解を支援することです。特に、理解できる差分を生成することが難しい場合、コードがどのように変更されたかを理解することは非常に困難です。
オプション1は、行った変更の履歴を難読化しますが、それ以外の場合は問題は発生しません。
オプション2は、行った変更の履歴を難読化しますが、オプション1よりも多少小さいかもしれませんが、コミットが明確であると仮定または結論付けた場合、他の問題を引き起こす可能性があります。これがオプション1よりも好まれる強い実用的な理由がない限り、これはそれよりも理想的ではありません。
オプション3は最良であり、他のすべては同等ですが、他の場所で説明したように、「極端な」時間を必要とするか、他の重要なコストが発生する場合、予想される利益とそれらのコストを比較する必要がありますよりクリーンなコミットを作成します。
提供された情報に基づいて、オプション1を選択します。変更をコミットするように促すリマインダーを設定する必要があるかもしれません。
プロトタイピングと書き換え
特に唯一のプログラマーであることについてのあなたのメモと、比較的新しいコードベースで作業しているという私の疑いに照らして、覚えておくべきもう1つの考慮事項は、おそらくあなたが「既存のコードを維持または拡張するのではなく、新しいコードのプロトタイプを作成しています。おそらく、この2つの間にそれほど鋭い区分はありませんが、それでも有用な区別だと思います。
新しいコードのプロトタイプを作成するときは、変更を保存するときはいつでも、ほぼ確実にブランチでコミットしますが、おそらく別のプロジェクトでコミットします。または、バージョン管理の範囲外で作業することもできます。代わりに、検討しているさまざまな仮説または設計の実行可能性に関する証拠の収集に集中できます。C#コードのVisual Studioの代わりにLINQPadなど、さまざまなツールを使用して小さなプロトタイプを作成することがよくあります。
特定の仮説または設計を検証したら、メインプロジェクト、理想的にはブランチでそれを書き直し、変更の性質に関して他の人(将来のあなたを含む)の理解に最も役立つ小さな有意義なコミットを行います。あなたが作っています。