Varsayılan modunda, git çekme, git getirmenin kısaltmasıdır ve bunu git merge FETCH_HEAD izler.
Bir yaptığınızda git pull origin master,
git pullgenellikle birleştirme taahhüt yaratan bir birleştirme gerçekleştirir. Bu nedenle, varsayılan olarak, uzaktan kumandadan çekmek zararsız bir işlem DEĞİLDİR: daha önce var olmayan yeni bir commit sha yaratabilir. Bu davranış, bir kullanıcının kafasını karıştırabilir, çünkü zararsız bir indirme işlemi olması gerektiği gibi hissettiren şey aslında kaydetme geçmişini tahmin edilemeyen şekillerde değiştirir.
Bundan kaçınmak için ihtiyacınız olan
git pull --ff-only
(ya da değil? hangisinin ihtiyaçlarınıza uygun olduğunu görmek için okumaya devam edin)
İle git pull --ff-onlyGit, şubenizi yalnızca yeni taahhütler oluşturmadan "hızlı ileri" edilebiliyorsa güncelleyecektir. Bu yapılamazsa, git pull --ff-onlysadece bir hata mesajı ile iptal edilir.
Git istemcinizi her zaman --ff-onlyvarsayılan olarak kullanacak şekilde yapılandırabilirsiniz , böylece komut satırı işaretini unutsanız bile bu davranışı elde edersiniz:
git config --global pull.ff only
Not: --globalBayrak, değişikliği makinenizdeki tüm depolara uygular. Bu davranışı yalnızca içinde bulunduğunuz arşiv için istiyorsanız, bayrağı atlayın.
Buradan alındı
Joe'nun cevabında belirttiği gibi bu uyarı Git 2.27'ye eklendi.
Tam uyarı şu şekilde görünüyor:
Farklı dalların nasıl uzlaştırılacağını belirtmeden çekmek tavsiye edilmez. Bir sonraki çekmeden önce aşağıdaki komutlardan birini çalıştırarak bu mesajı
susturabilirsiniz : git config pull.rebase false # merge (varsayılan strateji)
git config pull.rebase true # rebase
git config pull.ff sadece # hızlı ileri sar
Tüm depolar için varsayılan bir tercih belirlemek için "git config" i "git config --global" ile değiştirebilirsiniz. Ayrıca, çağrı başına yapılandırılmış varsayılanı geçersiz kılmak için komut satırında --rebase, --no-rebase veya --ff-yalnızca iletebilirsiniz.
Uyarı, seçenek olarak üç komut sunar, bunların tümü uyarıyı bastırır. Ancak farklı amaçlara hizmet ederler:
git config pull.rebase false # merge (the default strategy)
Bu, varsayılan davranışı korur ve uyarıyı bastırır.
git config pull.rebase true # rebase
Bu aslında hem yerel hem de uzaktan tek bir dalı koruyarak uzaktaki dalın üstüne işlem yapar (biri yerel diğeri uzaktaki iki farklı dalın dahil olduğu varsayılan davranıştan farklı olarak - ve ikisini birleştirmek için bir birleştirme gerçekleştirilir. ).
git config pull.ff only # fast-forward only
Bu, yalnızca yerel dal hızlı ileri alınabiliyorsa çekme işlemini gerçekleştirir. Değilse, sadece bir hata mesajı ile iptal edilir (ve herhangi bir kaydetme oluşturmaz).
Güncelleme:
Eğer varsa Git 2.29veya yukarıdaki, şimdi ayarlayabilirsiniz pull.ffiçin false, trueya da onlyuyarı kurtulmak için.
git config pull.ff
true- Bu, varsayılan davranıştır. Çekme, mümkünse hızlı ileri sarılır, aksi takdirde birleştirilir.
git config pull.ff false
false - Çekme hiçbir zaman ileri sarılmaz ve her zaman bir birleştirme oluşturulur.
git config pull.ff only
only - Çekme mümkünse hızlı ileri sarılır, aksi takdirde işlem bir hata mesajı ile iptal edilir.