Git Fetch
- Okunuşu
- git feç
Kısaca
git fetch, uzak depodan yeni commit, branch ve etiketleri indirip origin/main gibi uzak izleme branch'lerini günceller; sizin branch ve dosyalarınız değişmez.
git fetch ne yapar?
Yerel deponuz, her uzak deponun onunla son konuştuğunuzda nasıl göründüğünü origin/main ve origin/feature-x gibi uzak izleme branch'lerinde (remote-tracking branch) kaydeder. git fetch uzak depoyla bağlantı kurar, henüz sizde olmayan commit'leri indirir ve bu uzak izleme branch'lerini onlara uyacak şekilde taşır. Mevcut branch'iniz, staging alanınız ve dosyalarınız tam olarak oldukları gibi kalır.
Bu da fetch'i başkalarının ne yaptığını görmenin güvenli yolu yapar. Fetch'ten sonra git log main..origin/main uzak depoda olup sizin henüz birleştirmediğiniz commit'leri listeler, git diff main origin/main de değişiklikleri gösterir. Sonra onları merge etmeye, üzerlerine rebase etmeye ya da sonraya bırakmaya karar verebilirsiniz.
git pull aslında git fetch ve ardından mevcut branch'inize bir merge ya da rebase'dir. Ayrı fetch yapmak önce bakma şansı verir. git fetch --prune sunucuda silinmiş uzak izleme branch'lerini de kaldırır, git fetch --all de yapılandırılmış her uzak depoyu günceller. Birçok editör, branch'inizin geride kaldığını gösterebilmek için arka planda fetch yapar.
Sık yapılan bir yanlış, fetch'in yerel branch'lerinizi güncellediğini düşünmektir. main'in kendisine asla dokunmaz; yalnızca origin/main hareket eder. Fetch'ten sonra bir branch'in, siz pull, merge ya da rebase yapana kadar upstream'inin gerisinde görünmesinin nedeni budur.
Önemli noktalar
- git fetch uzak bir depodan yeni commit'leri ve referansları indirir.
- origin/main gibi uzak izleme branch'lerini günceller.
- Branch'leriniz, staging alanınız ve dosyalarınız değişmez.
- git pull, fetch artı bir merge ya da rebase'dir.
- --prune, sunucuda silinmiş uzak izleme branch'lerini kaldırır.
Örnek
git fetch origin --prune
git status
# Your branch is behind 'origin/main' by 3 commits, and can be fast-forwarded.
git log --oneline main..origin/main # what arrived from the remote
git diff main origin/main # the changes themselves
git merge --ff-only origin/main # bring them in when ready
# or: git rebase origin/mainSık sorulan sorular
git fetch ile git pull arasındaki fark nedir?
git fetch yalnızca değişiklikleri indirir ve uzak izleme branch'lerini günceller. git pull ise fetch yapar ve bu değişiklikleri hemen mevcut branch'inize merge ya da rebase eder.
git fetch güvenli mi?
Evet. Branch'lerinizi, staged değişikliklerinizi ya da çalışma dosyalarınızı değiştirmez; bu yüzden uzak depoda neyin değiştiğini görmek için onu istediğiniz zaman çalıştırabilirsiniz.
origin/main nedir?
Bir uzak izleme branch'idir: origin adlı uzak depodaki main branch'inin, son fetch yaptığınızda gösterdiği yerin yerel kopyası. Yalnızca fetch ya da pull yaptığınızda hareket eder.
Sık karşılaştırılanlar
İlgili sayfalar
- Git PullSürüm Kontrolü, s. 17Git pull, uzak bir depodan yeni commit'leri indiren ve bunları hemen mevcut yerel branch'inize entegre eden bir Git komutudur.
- Git RemoteSürüm Kontrolü, s. 19Git remote, deponuzun genellikle bir sunucudaki başka bir kopyasına verilen, origin gibi bir kısa addır; commit'leri oraya push eder, oradan pull edersiniz.
- Git PushSürüm Kontrolü, s. 18Git push, yerel commit'lerinizi uzak bir depoya yükleyip oradaki ilgili branch'i güncelleyen Git komutudur; böylece başkaları çalışmanızı görüp kullanabilir.
- BranchSürüm Kontrolü, s. 2Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.
- MergeSürüm Kontrolü, s. 29Git'te merge, bir branch'teki değişiklikleri başka bir branch'e katarak ayrı geliştirme hatlarını tek ve ortak bir geçmişte yeniden birleştirir.
- RebaseSürüm Kontrolü, s. 33Git'te rebase, bir branch'in commit'lerini başka bir commit'in üzerine yeniden uygular; geçmişi yeniden yazıp merge commit'siz, temiz ve doğrusal kılar.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin