Git Pull
Kısaca
Git pull, uzak bir depodan yeni commit'leri indiren ve bunları hemen mevcut yerel branch'inize entegre eden bir Git komutudur.
git pull nedir?
git pull, mevcut branch'inizi başkalarının uzak depoya push ettiği işlerle günceller. Aslında iki komutun birleşimidir: yeni commit'leri indiren ve origin/main gibi remote-tracking branch'leri güncelleyen git fetch ile onu izleyen ve bu commit'leri yerel branch'inizle birleştiren bir adım. Geliştiriciler genellikle yeni işe başlamadan önce ve push etmeden önce pull yapar; böylece branch'leri en son kodu temel alır.
Birleştirme adımının nasıl işlediği duruma ve ayarlarınıza bağlıdır. Kendi yerel commit'leriniz yoksa Git branch'inizi uzak olanla eşleşecek şekilde basitçe fast-forward eder. Her iki tarafta da yeni commit'ler varsa git pull ya bunları merge ederek bir merge commit oluşturur ya da git pull --rebase ile yerel commit'lerinizi uzak olanların üzerine yeniden uygular. Branch'ler ayrıştığında ve bir tercih yapılandırılmadığında Git'in modern sürümleri durur ve pull.rebase veya pull.ff ayarıyla seçim yapmanızı ister.
Pull yapmak, kendi randevularınızı eklemeden önce ortak bir takvimi eşitlemeye benzer: önce herkesin ne ayırdığını görür, sonra planlarınızı buna göre yerleştirirsiniz. Entegrasyon adımı, her merge ya da rebase gibi aynı çakışmalarla karşılaşabileceği için küçük ve sık pull yapmak çakışmaları seyrek ve çözmesi kolay tutar. Temkinli git pull --ff-only, branch'inizi yalnızca merge gerekmediğinde günceller, aksi halde karar verebilmeniz için durur.
En yaygın karışıklık git pull ile git fetch arasındadır. Fetch yalnızca yeni commit'leri indirir ve dosyalarınıza ya da branch'lerinize asla dokunmaz; bu yüzden çalıştırması her zaman güvenlidir, pull ise devam edip mevcut branch'inizi değiştirir. Adına rağmen git pull bir pull request ile de ilgisiz: pull request, başkalarından branch'inizi incelemelerini ve birleştirmelerini isteyen bir barındırma platformu özelliğidir; git pull ise başkalarının commit'lerini sizinkine getirir.
Önemli noktalar
git pullöncegit fetchçalıştırır, ardından sonucu mevcut branch'inize merge eder ya da rebase eder.- Kendi yerel commit'leriniz yoksa fast-forward yapar.
git pull --rebase, merge commit oluşturmak yerine yerel commit'lerinizi uzak olanların üzerine yeniden uygular.git fetch, çalışma dosyalarınızı asla değiştirmeyen, yalnızca indirme yapan alternatiftir.- Pull, herhangi bir merge gibi çözdüğünüz merge çakışmalarına yol açabilir.
Örnek
# Update the current branch from its upstream branch
git pull
# Roughly the same as these two steps (when on main):
git fetch origin
git merge origin/main
# Replay local commits on top of the remote ones instead of merging
git pull --rebase
# Only update if no merge is needed (never creates a merge commit)
git pull --ff-only
# Set a default once so Git doesn't have to ask
git config --global pull.rebase trueSık sorulan sorular
git fetch ile git pull arasındaki fark nedir?
git fetch uzak depodan yeni commit'leri indirir ve origin/main gibi remote-tracking branch'leri günceller, ancak kendi branch'lerinize ve dosyalarınıza dokunmaz. git pull aynı fetch'i yapar, ardından bu commit'leri mevcut branch'inize merge eder ya da rebase eder.
git pull --rebase kullanmalı mıyım?
Birçok ekip, kişisel bir branch'i senkronize etmek için bunu tercih eder; çünkü fazladan merge commit olmadan geçmişi doğrusal tutar. Yerel commit'leriniz başkalarıyla paylaşıldıysa kaçının; çünkü rebase onları yeniden yazar.
Bir git pull nasıl geri alınır?
Pull'dan hemen sonra git reset --hard ORIG_HEAD, branch'i eski konumuna taşır ve çekilen değişiklikleri atar. Önce commit edilmemiş işiniz olmadığından emin olun; çünkü --hard onu da siler.
Sık karşılaştırılanlar
İlgili sayfalar
- 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.
- 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.
- 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.
- Merge ConflictSürüm Kontrolü, s. 30Merge çakışması, iki branch bir dosyanın aynı satırlarını değiştirdiği için Git'in otomatik birleştiremediği, sonuca birinin karar vermesi gereken durumdur.
- Git CloneSürüm Kontrolü, s. 13Git clone, mevcut bir deponun tüm geçmişiyle birlikte eksiksiz bir kopyasını indiren ve çalışmanız için bilgisayarınızda hazırlayan bir Git komutudur.
- Git FetchSürüm Kontrolü, s. 15git 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.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin