Git, modern yazılım geliştirmenin vazgeçilmez aracıdır. Temel komutları bilmek yeterli gibi görünse de, karmaşık projelerde ileri seviye komutlar büyük zaman tasarrufu sağlar ve iş akışını önemli ölçüde iyileştirir. Bu rehberde, günlük iş akışınızı güçlendirecek ileri Git komutlarını inceliyoruz.
Git Rebase: Temiz Bir Geçmiş İçin
Rebase, commit geçmişini düzenlemenin en güçlü yollarından biridir:
Temel Rebase
git checkout feature-branch
git rebase main
Bu komut, feature dalınızdaki commitleri main dalının en güncel hâlinin üzerine yeniden uygular. Sonuç olarak doğrusal ve temiz bir geçmiş elde edersiniz.
İnteraktif Rebase
git rebase -i HEAD~5
Son 5 commit üzerinde düzenleme yapmanıza olanak tanır:
- pick: Commit'i olduğu gibi bırak
- squash: Önceki commit ile birleştir
- reword: Commit mesajını değiştir
- edit: Commit içeriğini düzenle
- drop: Commit'i sil
Rebase, paylaşılmış dallarda dikkatli kullanılmalıdır. Yayımlanmış commitleri rebase etmek, ekip arkadaşlarınızın çalışmalarını bozabilir.
Git Cherry-Pick: Seçici Commit Taşıma
Belirli bir commit'i başka bir dala taşımak için cherry-pick kullanılır:
git checkout main
git cherry-pick abc1234
Yaygın Kullanım Senaryoları
- Acil bir hata düzeltmesini yayın dalına taşıma
- Yanlış dalda yapılan commit'i doğru dala alma
- Belirli özellikleri seçerek farklı sürümlere dahil etme
Çakışma Durumunda
git cherry-pick --continue # Çakışmayı çözdükten sonra
git cherry-pick --abort # İşlemi iptal etmek için
Git Bisect: Hata Avında Yardımcınız
Bir hatanın hangi commit'te ortaya çıktığını bulmak için bisect, ikili arama algoritması kullanır:
git bisect start
git bisect bad # Şu anki commit hatalı
git bisect good v2.0 # v2.0 etiketi çalışıyordu
Git, otomatik olarak ortadaki commitleri kontrol eder. Her adımda "good" veya "bad" diyerek hatayı yaratan commit'e ulaşırsınız.
Otomatik Bisect
git bisect start HEAD v2.0
git bisect run ./test-script.sh
Bir test betiği ile süreci tamamen otomatikleştirmeniz mümkün.
Git Stash: Geçici Depolama
Üzerinde çalıştığınız değişiklikleri geçici olarak saklamak için stash kullanılır:
Temel Kullanım
git stash # Değişiklikleri sakla
git stash pop # Son saklananı geri yükle ve listeden sil
git stash apply # Son saklananı geri yükle ama listede tut
Gelişmiş Stash
- İsimli stash:
git stash push -m "WIP: login formu" - Belirli dosyaları saklama:
git stash push -p - Stash listesi:
git stash list - Belirli stash'i uygulama:
git stash apply stash@{2}
Git Reflog: Kayıp Commitleri Kurtarma
Reflog, HEAD'in tüm hareketlerini kaydeder ve "kayıp" görünen commitleri kurtarmada hayat kurtarıcıdır:
git reflog
Kurtarma Senaryoları
- Yanlışlıkla silinen dalı geri getirme
- Hatalı bir reset sonrası eski duruma dönme
- Kaybolan commitleri bulma
git checkout -b kurtarma-dali abc1234
Reflog varsayılan olarak 90 gün boyunca verileri saklar. Panik yapmadan önce reflog'u kontrol edin.
Bonus İpuçları
Git Worktree
Birden fazla dalda aynı anda çalışmak için:
git worktree add ../feature-branch feature-branch
Git Blame ile Kod Arkeolojisi
Bir satırın kim tarafından ne zaman değiştirildiğini görmek için:
git blame dosya.cs
git blame -L 10,20 dosya.cs # Sadece 10-20. satırlar
Yararlı Git Alias'ları
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.st "status -sb"
git config --global alias.co "checkout"
En İyi Uygulamalar
- Küçük ve anlamlı commitler yapın: Her commit tek bir mantıksal değişiklik içermeli
- Açıklayıcı commit mesajları yazın: "Fix bug" yerine "Kullanıcı girişinde null referans hatasını düzelt"
- Feature branch stratejisi kullanın: Her özellik veya düzeltme için ayrı dal
- Düzenli olarak rebase yapın: Feature dalınızı main ile güncel tutun
- Force push'tan kaçının: Paylaşılan dallarda asla
--forcekullanmayın
Sonuç
Git'in ileri seviye komutlarını öğrenmek, geliştirici verimliliğinizi önemli ölçüde artırır. BUZ Yazılım olarak, ekiplerimizde bu komutları aktif olarak kullanıyor ve müşterilerimize Git iş akışı danışmanlığı sunuyoruz. Sorularınız için bizimle iletişime geçebilirsiniz.