Pendekatan pribadi saya terhadap git commit adalah bahwa setiap commit harus menyertakan unit perubahan , dalam kelengkapannya.
Ketika saya berkembang, saya biasanya fokus pada unit seperti itu. Tetapi kadang-kadang, perhatian saya menyimpang di tempat lain dan saya bekerja sebentar di unit yang berbeda. Ini mungkin tidak optimal, tetapi saya telah belajar untuk berkomitmen dengan hati-hati ( git add --interactive
adalah teman baik saya).
Namun, itu bisa terjadi bahwa saya lupa untuk melakukan perubahan selektif saya dan bukannya melakukan seluruh file, percaya bahwa semua perubahan yang saya lihat di diff memang terkait dengan unit yang sama, meskipun mungkin ada perubahan atau dua yang sama sekali tidak terkait.
Lalu saya git push
.
Apakah ini berbahaya? Haruskah saya berupaya mengubah komit sehingga hanya mencakup perubahan yang dimaksudkan? Perhatian utama saya adalah bahwa siapa pun yang melihat sejarah akan melihat perubahan dan mungkin akan menggaruk kepala mereka selama beberapa menit sebelum menyadari bahwa itu kemungkinan besar adalah kesalahan. Lebih buruk lagi, saya bisa membayangkan bahwa perubahan bahkan akan terlihat terkait dan programmer mungkin tidak mengenali kesalahannya.
Masalahnya adalah, karena saya sudah mendorong, saya tidak bisa menulis ulang sejarah server dengan aman , jadi saya mungkin harus terlebih dahulu mengembalikan komit, membaginya dengan benar dan komit lagi. Atau, saya bisa mengubah komit dengan pesan komit yang lebih baik, tetapi saya harus benar-benar cepat karena itu juga memerlukan penulisan ulang riwayat. Sebagai upaya terakhir, saya mungkin hanya melakukan unit yang saya kerjakan sebagai berikutnya, meninggalkan catatan bahwa ada perubahan terkait dalam komit sebelumnya (tapi ini terasa salah).
Saya mengerti bahwa dalam pengaturan multi-pengembang dengan alur kerja peninjauan kode yang tepat, hal ini kemungkinan tidak akan terjadi. Saya juga mengerti bahwa jika saya adalah satu-satunya pengembang dalam suatu proyek, maka penulisan ulang sejarah adalah solusi terbaik untuk ini.