Alasan paling penting untuk membuat komitmen yang sering, kecil, dan bermakna adalah untuk membantu pemahaman tentang sejarah kode. Secara khusus, sangat sulit untuk memahami bagaimana kode telah berubah jika sulit untuk menghasilkan perbedaan yang dapat dimengerti.
Opsi 1 mengaburkan riwayat perubahan yang telah Anda buat, tetapi sebaliknya itu tidak akan menyebabkan masalah.
Opsi 2 mengaburkan riwayat perubahan yang telah Anda buat, mungkin agak kurang dari opsi 1, tetapi bisa menyebabkan masalah lain untuk Anda atau orang lain jika mereka menganggap atau menyimpulkan bahwa komitmennya berbeda, misalnya dapat digabung ke cabang lain secara mandiri. Kecuali ada alasan praktis yang kuat mengapa ini lebih disukai daripada opsi 1, ini kurang ideal daripada itu.
Opsi 3 adalah yang terbaik, semuanya sama, tetapi jika, seperti yang telah Anda jelaskan di tempat lain, melakukannya akan membutuhkan jumlah waktu "ekstrem" atau akan menimbulkan biaya signifikan lainnya, Anda harus mempertimbangkan biaya-biaya tersebut terhadap manfaat yang diharapkan dari membuat komitmen lebih bersih.
Berdasarkan info yang Anda berikan, saya akan memilih opsi 1. Mungkin Anda harus mengatur pengingat yang meminta Anda melakukan perubahan?
Prototyping dan Penulisan Ulang
Pertimbangan lain yang perlu diingat, terutama mengingat catatan Anda tentang menjadi programmer tunggal, dan kecurigaan saya bahwa Anda sedang mengerjakan basis kode yang relatif baru, adalah bahwa mungkin baik untuk mengembangkan kebiasaan yang berbeda sehubungan dengan melakukan perubahan ketika Anda sedang membuat prototipe kode baru versus mempertahankan atau memperluas kode yang ada. Mungkin tidak ada pembagian yang sangat tajam antara keduanya, tapi saya pikir itu masih merupakan perbedaan yang berguna.
Saat Anda membuat prototipe kode baru, komit kapan pun Anda ingin menyimpan perubahan Anda, hampir pasti di cabang, tapi mungkin dalam proyek terpisah. Atau mungkin bahkan hanya bekerja di luar kendali versi sama sekali. Alih-alih, Anda bisa fokus mengumpulkan bukti tentang kelayakan berbagai hipotesis atau desain yang Anda pertimbangkan. Saya sering menulis prototipe kecil menggunakan alat yang berbeda, misalnya LINQPad bukan Visual Studio untuk kode C #.
Saat Anda telah memvalidasi hipotesis atau desain tertentu, tulis ulang di proyek utama Anda, idealnya di cabang, dan buat komitmen kecil dan bermakna yang akan membantu pemahaman orang lain (termasuk Anda di masa depan) tentang sifat perubahan Anda sedang membuat.