**Soru:** Yazılım geliştirirken ne sıklıkla commit atılmalı? Çok sık mı, az mı? **Kısa cevap:** "Mantıklı bir iş birimi" tamamlandığında commit at. Zamana değil, ne yaptığına bak. --- **Commit sıklığı neden önemli?** Commit geçmişi bir projenin hafızasıdır. İyi bir commit sıklığı hem takım arkadaşlarına hem de ilerideki sana şu soruların cevabını verir: Bu değişiklik ne zaman eklendi? Neden eklendi? Bu hata hangi commit ile girdi? --- **Çok seyrek commit, sorunları:** - "Tüm sabahı tek commite tıktım" → merge conflict kabusuna davet - Bug nerede çıktı? Bulmak için devasa bir değişiklik bloğunu tararken saatler geçer - `git bisect` gibi araçlar işe yaramaz hale gelir - Geri almak (revert) büyük birimleri etkiler **Çok sık commit, sorunları:** - "WIP", "asdf", "düzelttim" gibi mesajlarla kirli geçmiş - Code review zorlaşır: hangi commit neyi getirdi? - Her commit bağımsız çalışır bir değişiklik taşımalı; yarım kalan bir özellik commiti build'i bozabilir --- **Doğru commit sıklığı için pratik kural:** **Bir commit = bir mantıklı değişiklik.** Bu şu anlama gelir: - Bir bug'ı düzelttiysen → commit - Bir fonksiyonu refactor ettiysen → commit - Bir özelliğin çalışan küçük bir parçasını bitirdiysen → commit - Test eklediysen → commit (tercihen prodüksiyon koduyla birlikte) Eğer commit mesajında "ve" kullanmak zorunda hissediyorsan, muhtemelen iki ayrı commit olmalıdır. --- **Commit sıklığı için zaman bazlı parmak kuralları:** Zaman tabanlı bir alışkanlık edinmek istiyorsan: - Uzun bir oturum sırasında her 30-60 dakikada bir durumu gözden geçir - Gün sonuna kadar local commit atmamak nadir ama tehlikeli bir durumdur (disk arızası, kazara silme) - "Öğleden sonra için commit atmadan ayrılma" basit ama etkili bir kural --- **Özellik bayrakları (feature flags) ve commit sıklığı:** Tamamlanmamış bir özelliği commitlemen gerekiyorsa (örneğin uzun süreli bir geliştirme) feature flag kullan. Yarım özelliği bayrak arkasına al, böylece main branch'e güvenle push edebilirsin. --- **Commit mesajı kalitesi sıklık kadar önemli:** Sık ama anlamsız mesajlar değersizdir. Commit sıklığını artırırken mesaj kalitesini de koru: - ✓ `fix: kullanıcı girişinde boş e-posta validasyonu eklendi` - ✗ `düzelt` - ✗ `wip` Bu iki boyut birlikte ele alındığında commit geçmişi gerçek bir değere dönüşür.