Temel Kavramlar: Rebase ve Merge
Rebase Nedir?
Rebase, bir branch’teki commit geçmişini başka bir branch’in en son haliyle birleştirir ve commit geçmişini düzenler. Bu işlem, daha temiz ve doğrusal bir commit geçmişi sağlar.
- Kullanımı:
git checkout feature/branch-name git rebase main
- Avantajları:
- Temiz ve kolay okunabilir bir commit geçmişi.
- Commit’lerin sırasını düzenler.
Merge Nedir?
Merge, bir branch’teki değişiklikleri başka bir branch’e dahil etmek için kullanılır. Bu işlem, commit geçmişini olduğu gibi bırakır ve birleştirme işlemi için yeni bir merge commit oluşturur.
- Kullanımı:
git checkout main git merge feature/branch-name
- Avantajları:
- Tüm commit geçmişini korur.
- Takım çalışmasında hangi değişikliklerin birleştirildiğini açıkça gösterir.
Best Practices
1. Private branchte rebase, Public branchte merge
- Rebase: Kendi branch’in üzerinde çalışıyorsan ve başkalarının erişimi yoksa rebase kullan.
- Merge: Paylaşılan branch’ler (ör.
main
,develop
) için merge kullan ve takım arkadaşlarının commit geçmişine müdahale etme.
2. Commit Öncesi Her Zaman Pull Çek
Kodu commit etmeden önce her zaman en güncel değişiklikler için pull çek.
- Adımlar:
git fetch origin git pull origin main
- Bu işlem, olası çatışmaları (conflicts) önler ve en güncel kodla çalışmanı sağlar.
3. Commit Öncesi Derleme ve Test Yap
Her commit’ten önce kodu derle ve test et. Böylece hatalı kodun repository’ye girmesini önlersin.
- Adımlar:
# Örnek test komutu npm run build && npm test
4. Binary Dosyaları Commit Etmekten Kaçın
Binary dosyaları (.exe
, .dll
, .zip
, vs.) git’e commit etme. Bunun yerine, binary dosyaları oluşturmak için gereken kaynak kodunu veya script’leri paylaş.
- Yapılması Gerekenler:
.gitignore
dosyasını kullanarak binary dosyaları hariç tut.*.exe *.dll *.zip
5. Sürümleme İçin Tag Kullan
Yeni sürümleri belirlemek için git tag’lerini kullan. Tag’ler belirli bir commit’e anlamlı bir isim verir.
- Tag Oluşturma:
git tag -a v1.0.0 -m "First release" git push origin v1.0.0
- Tag Listeleme:
git tag
6. Anlamlı Commit Mesajları Yaz
Commit mesajları kısa, açıklayıcı ve anlamlı olmalıdır.
- İyi bir commit mesajı formatı:
Başlık: Kısa ama açıklayıcı (ör. "Fix login issue")
7. Feature Branch Kullan
Yeni özellikler, hata düzeltmeleri ve iyileştirmeler için her zaman ayrı branch’ler oluştur. Bu, kodun düzenli ve takip edilebilir olmasını sağlar.
- Feature Branch Örnekleri:
feature/user-authentication
fix/payment-bug
8. Büyük Commit’lerden Kaçın
Büyük ve karmaşık commit’lerden kaçın. Değişikliklerinizi küçük ve anlamlı parçalara böl.
- İdeal commit: Tek bir değişikliği veya küçük bir grup ilgili değişikliği temsil eder.
9. Pull Request Kullanarak Code Review Yap
Kodu repository’ye merge etmeden önce her zaman bir Pull Request oluştur ve takım arkadaşlarının kodunu gözden geçirmesini sağla.
10. Merge Konfliklerini Dikkatlice Çöz
Merge sırasında oluşan çatışmaları dikkatlice incele ve çöz.
- Conflict çözme adımları:
git fetch origin git merge origin/main # Conflict çöz ve commit et git add . git commit -m "Resolve merge conflicts"
Ekstra
- Küçük ve anlamlı branch isimleri kullan:
feature/add-login
fix/header-alignment
- Sık sık push yaparak ilerlemenizi kaydet:
git push origin feature/branch-name
- Eski branch’leri temizle: İşi tamamlanmış branch’leri düzenli olarak silerek repository’yi düzenli tut.
git branch -d branch-name git push origin --delete branch-name