Giriş
Git kullanıcılarının en sık karşılaştığı sorulardan biri, uzak depodaki (remote) güncellemeleri yerel çalışma alanına aktarmak için git fetch mi yoksa git pull mu kullanılması gerektiğidir. Bu makalede, bu iki komutun çalışma prensiplerini ve güvenli bir iş akışı için hangisinin tercih edilmesi gerektiğini detaylandıracağız.
Git Fetch Nedir?
git fetch, uzak depodaki tüm commit, dal (branch) ve etiketleri yerel deponuza indirir ancak çalışma dizininize veya aktif dalınıza hiçbir müdahalede bulunmaz. Bu komut, uzak depodaki değişiklikleri 'görmenizi' sağlar ancak bunları yerel dosyalarınızla birleştirmez (merge etmez).
Kullanım Adımları
- Uzak depodaki güncellemeleri indirin:
git fetch origin - Yerel dalınız ile uzak dal arasındaki farkları inceleyin:
git log main..origin/main --oneline - Değişiklikleri inceledikten sonra, uygun görürseniz birleştirme işlemini yapın:
git merge origin/main
İpucu: git fetch komutu tamamen güvenlidir; çalışma dizininizdeki dosyaları değiştirmez ve çakışma (conflict) riski taşımaz.Git Pull Nedir?
git pull, aslında iki farklı işlemin birleşimidir: git fetch ve ardından git merge (veya yapılandırmaya göre git rebase). Bu komut, uzak depodaki değişiklikleri indirir ve doğrudan mevcut dalınızla birleştirir.
Riskler ve Dikkat Edilmesi Gerekenler
git pull doğrudan çalışma dizininizi değiştirdiği için, yerelinizde bekleyen değişiklikler varsa beklenmedik birleştirme çakışmaları (merge conflicts) ile karşılaşabilirsiniz. Bu nedenle, üzerinde çalıştığınız dalın güncel olduğundan emin olmalısınız.
Karşılaştırma Tablosu
| Özellik | git fetch | git pull |
|---|---|---|
| Uzak değişiklikleri indirir | Evet | Evet |
| Yerel dalı günceller | Hayır | Evet |
| Çalışma dizinini değiştirir | Hayır | Evet |
| Çakışma riski | Yok | Var |
En İyi Uygulama: Güvenli İş Akışı
Profesyonel geliştiriciler, genellikle git pull yerine git fetch kullanmayı tercih ederler. Bu, değişiklikleri önceden görmenizi ve birleştirme işlemini kontrol altında tutmanızı sağlar. Eğer doğrudan pull yapmak istiyorsanız, en azından --ff-only bayrağını kullanarak beklenmedik birleştirme commit'lerinden kaçınabilirsiniz:
git pull --ff-onlyEğer bir hata yaptıysanız ve git pull işlemi sonucunda oluşan birleştirme commit'ini geri almak isterseniz, git reset --hard ORIG_HEAD komutu ile bir önceki duruma dönebilirsiniz (Dikkat: Bu komut kaydedilmemiş değişiklikleri siler).



