Git Workflow Pratik Rehberi
# Git Workflow Pratik RehberiTek başına çalışırken git bir yedekleme aracı gibi görünür. Takıma girdiğin an işler değişir. Aynı dosyaya üç kişi dokunur, merge sırasında çatışma çıkar, kim ne zaman ne yaptı belli olmaz. Çözüm daha fazla komut bilmek değil; ortak bir düzen kurmak.
Bu rehber, kendi projende hemen uygulayabileceğin bir git branching stratejisi ve günlük akış öneriyor. Komutları terminalde dene, sadece okuyup geçme.
Ön koşul: temel git komutlarını (add, commit, push, pull) biliyorsan yeterli. Terminalde rahat değilsen Linux terminali başlangıç rehberine bir göz atmak işini kolaylaştırır.## Branch Yapısını Kurmak
Her şey branch isimlendirmesiyle başlar. Düzensiz branch isimleri, iki hafta sonra kimsenin çözemediği bir karmaşaya dönüşür.
### Kalıcı ve geçici branch'leri ayırİki tür branch vardır. Kalıcı olanlar silinmez, geçici olanlar iş bitince silinir.
- main — her zaman çalışan, yayına gidebilecek kod. Buraya doğrudan commit atılmaz.
- develop — geliştirmelerin birleştiği ara hat. Küçük takımlarda bu branch'i atlayıp doğrudan main kullanmak da mantıklı.
- feature/* — yeni bir iş için açılan geçici branch.
- fix/* — hata düzeltmeleri.
- hotfix/* — canlıdaki acil sorun. Doğrudan main'den açılır.
İsimlendirme kuralı: tip/kisa-aciklama. Türkçe karakter, boşluk ve büyük harf kullanma.
| İyi | Kötü |
|---|---|
| feature/kullanici-profili | yeniOzellik |
| fix/login-500-hatasi | duzeltme2 |
| hotfix/odeme-timeout | acil |
Çatışmaların birinci nedeni uzun yaşayan branch'lerdir. Branch'in main'den uzaklaştığı süre ne kadar artarsa, birleştirme o kadar acı verir.
- Bir branch en fazla 1-3 günlük iş içersin.
- İş büyükse parçala. "Kullanıcı yönetimi" yerine "kullanıcı listesi", "kullanıcı düzenleme" diye ayır.
- Her sabah main'deki değişiklikleri kendi branch'ine al: git fetch origin sonra git rebase origin/main.
- Rebase seni korkutuyorsa git merge origin/main kullan. Önemli olan güncel kalmak.
Kural yazmak yetmez, teknik olarak engelle. Depo ayarlarından main branch'ini korumaya al:
- Doğrudan push kapalı olsun.
- Değişiklikler sadece pull request ile girsin.
- En az bir onay istensin.
- Testler geçmeden merge edilemesin.
Bu ayarlar tek kişilik projede bile faydalı. Kendini yanlışlıkla vurmaktan korur. GitHub üzerinde ekip çalışması yapıyorsan kolaborasyon ipuçları yazısındaki review alışkanlıkları bunun üstüne oturur.
## Günlük Akış ve Çatışma YönetimiStrateji kurulduktan sonra iş, tekrar eden bir ritme dönüşür. Ritmi bir kez ezberle, sonra düşünmeden uygula.
### Bir işin baştan sona akışı- Güncelle: git checkout main ve git pull.
- Branch aç: git checkout -b feature/arama-filtresi.
- Küçük commit'ler at: her commit tek bir mantıklı değişiklik olsun.
- Mesajı anlamlı yaz: "arama filtresine tarih aralığı eklendi" gibi. "düzeltme", "asdf" gibi mesajlar geleceğini karartır.
- Push et: git push -u origin feature/arama-filtresi.
- Pull request aç: ne yaptığını 3-4 satırda anlat.
- Merge sonrası temizle: yerel ve uzak branch'i sil.
Commit mesajlarında ortak bir önek kullanmak arama yaparken çok işe yarar: feat:, fix:, docs:, refactor:.
### Çatışma çıkınca ne yapmalıÇatışma bir hata değil, iki kişinin aynı satıra dokunduğunun bildirimidir. Panik yapma, sırayla ilerle.
- git status ile çatışan dosyaları listele.
- Dosyayı aç. <<<<<<<, =======, >>>>>>> işaretlerini bul.
- Üst blok senin tarafın, alt blok gelen taraf. İkisini de oku.
- Doğru kodu elle yaz. İşaretleri tamamen sil.
- Şüpheye düşersen kodu yazan kişiye sor. Tahmin ederek silmek en pahalı hatadır.
- git add dosya ve ardından git rebase --continue ya da git commit.
Çözüm sırasında editörünün merge aracı hayatını kolaylaştırır. VS Code'un çatışma paneli üç blok halinde karşılaştırma sunar; hızlandırma tricksleri yazısındaki kısayollar burada da işe yarar.
### Çatışmayı baştan azaltmak- Aynı dosyada iki kişi çalışacaksa önce konuşun, işi dosya bazında bölün.
- Otomatik biçimlendirme kurallarını projeye ekleyin. Yoksa yarı çatışmalar sadece girinti farkından çıkar.
- Büyük yeniden düzenlemeleri ayrı bir PR'da, tek başına yapın.
- Üretilen dosyaları (build çıktısı, log, bağımlılık klasörleri) .gitignore'a alın.
- Günde en az bir kez main'i branch'inize çekin.
Kurtarma komutları
- git stash — yarım işi geçici kenara koy.
- git restore dosya — commit'lenmemiş değişikliği geri al.
- git reset --soft HEAD~1 — son commit'i çöz, değişiklikleri tut.
- git reflog — kaybettiğini sandığın commit'i bul. Neredeyse her şey geri gelir.
- git revert <hash>
© 2026 Yazılım Atölyesi