Bu döküman, projenin sürdürülebilirliği, kod geçmişinin okunabilirliği ve ekip içi senkronizasyonun en üst düzeyde tutulması amacıyla hazırlanmıştır.
Commit mesajları, projenin tarihçesidir. İyi bir mesaj, kodun ne yaptığından ziyade neden yapıldığını ve neyi etkilediğini anlatır. Takım içinde Conventional Commits yapısını kullanıyoruz.
<tip>(<isteğe bağlı kapsam>): <kısa açıklama>
- feat: Yeni bir özellik eklendiğinde.
- fix: Bir hata düzeltildiğinde.
- docs: Sadece dökümantasyonda değişiklik yapıldığında.
- style: Kodun çalışmasını etkilemeyen görsel değişiklikler (boşluklar, noktalı virgüller vb.).
- refactor: Ne bir hata düzeltmesi ne de yeni bir özellik eklemeyen kod değişikliği.
- test: Eksik testlerin eklenmesi veya mevcut testlerin düzeltilmesi.
- chore: Build süreci, kütüphane güncellemeleri veya yardımcı araçlardaki değişiklikler.
- Emir kipi kullanın: "Düzeltildi" değil, "Düzelt" veya "Fix". (Örn:
feat: login sayfasına recaptcha ekle) - İlk harf küçük: Tip ve kapsamdan sonraki ilk harfi küçük tutun.
- Nokta koymayın: Mesajın sonuna nokta koymayın.
- Detay gerekiyorsa: Kısa açıklamadan sonra bir satır boşluk bırakıp detaylı paragraf yazın.
Kaosun önüne geçmek için Git Flow benzeri bir yapı kullanıyoruz. Herkesin doğrudan main branch'ine basması kesinlikle yasaktır.
- main: Sadece canlıya çıkmaya hazır, stabil kod bulunur.
- develop: Geliştirme sürecindeki ana daldır. Feature'lar buraya merge edilir.
- feature/
görev-adı: Yeni özellikler içindevelopüzerinden açılır. İş bitincedevelop'a döner.- Örn:
feature/user-auth
- Örn:
- bugfix/
hata-adı:developüzerindeki hataları düzeltmek için. - hotfix/
acil-hata: Canlıdaki (main) kritik hataları anında düzeltmek içinmainüzerinden açılır. - release/
v1.1.0: Yayına hazırlık sürecinde sürüm notları ve son testler için.
Kodun kalitesini koruyan en önemli filtre PR aşamasıdır.
- Kendi branch'inizde kodun çalıştığından ve testlerden geçtiğinden emin olun.
- Gereksiz
console.logveya "todo" notlarını temizleyin. - Branch'inizi güncel tutmak için
developdalını kendi dalınızarebaseveyamergeyapın.
PR açarken şu şablonu takip edin:
- Ne yapıldı?: Kısa özet.
- İlgili Task: Jira/Trello/Github Issue linki.
- Ekran Görüntüsü: Görsel bir değişiklik varsa mutlaka eklenmeli.
- Squash and Merge: Feature branch'indeki 20 tane "ufak tefek" commit'i tek bir anlamlı commit'e indirgeyerek ana dala ekler. Geçmişin temiz kalması için önerilir.
Henüz commit atmaya hazır değilsiniz ama acilen başka bir dalda hata düzeltmeniz gerekiyor:
git stash # Değişiklikleri geçici olarak kaldır ve sakla
git stash pop # Geri geldiğinde kaldığın yerden devam etCommit attınız ama küçük bir yazım hatası fark ettiniz veya bir dosyayı eklemeyi unuttunuz:
git add .
git commit --amend --no-edit # Eski commit'i günceller, yeni commit oluşturmazTerminalden ağaç yapısını görmek için:
git log --oneline --graph --allEğer yanlış branch'e commit attıysanız, cherry-pick ile o commit'i doğru branch'e "cımbızla" çekebilirsiniz:
git checkout doğru-branch
git cherry-pick <hatalı-commit-hash>Not: "Kod çalışıyorsa dokunma" değil, "Kod temizse pushla" prensibiyle ilerliyoruz. İyi geliştirmeler!