“Git hızlı ileri sarma güncellemeleri reddedildi” ne anlama geliyor?


153

Git'i iki bilgisayarımı ve gelişimimi yönetmek için kullanıyorum. GitHub'da değişiklik yapmaya çalışıyorum ve hatayı alıyorum.

İçin bazı referanslar gönderilemedi <repo>. Geçmişinizi kaybetmenizi önlemek için, hızlı ileri almayan güncelleştirmeler reddedildi. Tekrar basmadan önce uzaktan değişiklikleri birleştirin.

Buna ne sebep olabilir ve bunu nasıl düzeltebilirim?

DÜZENLE:

Repoyu çekmek aşağıdakileri döndürür:

* şube yöneticisi-> yönetici (hızlı ileri sarma) Zaten güncel

İtmek hala bana yukarıda belirtilen hatayı veriyor.


Yanıtlar:


136

GitHub "denilen güzel bir bölüm vardır olmayan hızlı ileri‘hatalarını çözme’ "

Bu hata ilk başta biraz ezici olabilir, korkmayın.
Basitçe söylemek gerekirse, git taahhütleri kaybetmeden uzaktan kumandada değişiklik yapamaz, bu yüzden itmeyi reddeder .
Genellikle bu, başka bir kullanıcının aynı şubeye itmesinden kaynaklanır. Bunu, uzak dalı getirip birleştirerek veya her ikisini aynı anda gerçekleştirmek için çekme özelliğini kullanarak çözebilirsiniz.

Diğer durumlarda bu hata, git commit --amendveya gibi komutlar kullanılarak yerel olarak yapılan yıkıcı değişikliklerin bir sonucudur git rebase.
Eğer ekleyerek uzaktan geçersiz kılabilir iken --forceiçin pushkomuta Bunu yapmak istediğiniz şeydir kesinlikle eminseniz, sadece yapmalısınız.
Zorla itme, uzak dalı getiren diğer kullanıcılar için sorunlara neden olabilir ve kötü uygulama olarak kabul edilir. Şüphe duyduğunuzda, zorla itmeyin .


Git uzaktan kumanda üzerinde, bir Visual Git Referansı'nın gösterdiği hızlı ileri birleştirme gibi değişiklikler yapamaz :

alternatif metin

Bu tam olarak sizin durumunuz değildir , ancak "hızlı ileri" nin ne olduğunu görmeye yardımcı olur HEAD(bir şubenin yeni ve daha yeni bir taahhüde taşındığı yer).


" branch master->master (non-fast-forward) Already-up-to-date" Genellikle uzak karşı kısımlarını takip etmeyen yerel şubeler içindir.
Örneğin bu SO sorusuna " git pull günceldir fakat git push hızlı ileriye doğru reddeder " ifadesine bakın .
Ya da iki şube birbiriyle bağlantılıdır, ancak kendi tarihleriyle aynı fikirde değil:
Bkz. " Hiç bitmeyen GIT hikayesi - burada neyi yanlış yapıyorum? "

Bu, alt sürüm dalınızın ve uzak git ana dalınızın bir şey üzerinde anlaşmayacağı anlamına gelir.
Bazı değişiklikler diğerinde olmayan bir değişime itildi / taahhüt edildi.
Ateş edin gitk --allve size neyin yanlış gittiğine dair bir ipucu vermelisiniz - tarihte "çatal" arayın.


53

Bu, uzak depoya aktardığınız işlemlerden farklı başka işlemlerin de olduğu anlamına gelir. Bunu genellikle bir

git pull

itmeden önce

Sonuçta, "hızlı ileri alma", taahhütlerin birleştirme gerektirmeden doğrudan çalışma ağacının üstüne uygulanabileceği anlamına gelir.


2
Bu benim için işe yaradı! Depo sitesindeki readme.md dosyasını değiştirdiğimi unuttum!
ryanwinchester

14

Hızlı ileri güncelleme, bir taraftaki tek değişikliklerin diğer taraftaki en son taahhütten sonra olduğu yerdir, bu nedenle herhangi bir birleştirmeye gerek yoktur. Bu, itmeden önce değişikliklerinizi birleştirmeniz gerektiğini söylüyor.


8

bu durumda itme işlemiyle kuvvet kullanmak isteyebilirsiniz

git push origin master - kuvvet


1
Yanlış.
github'ın

6

Bir do asla git -fyapmakpush sonra felaketle sonuçlanabileceğinden .

Sadece git pullyerel şubenizden birini yapmalısınız .

Ör:

git pull origin 'your_local_branch'

ve sonra bir git push


0

Birleştirmeniz ve çözmeniz gerekir conflicts locallyDeğişikliklerinizi uzaktan repo / fork'a aktarmadan önce .

1) çekme (getirme ve birleştirme)

$ git pull remote branch 

2) Değişiklikleri itin

$ git push remote branch 

Yine de seçeneği pushkullanarak zorla hızlı bir seçiminiz var, --forceancak değişiklik kaybına veya diğer katılımcıları kötü etkileyebileceğinden kaçınılmalıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.