Git push başarısız oldu, "Hızlı ileri sarma güncellemeleri reddedildi"


99

GIT depolarımı Git Online üzerinden düzenledim. Yerel kod değişikliklerimi göndermeyi denedikten sonra bir hata aldım:

Git push failed, To prevent from losing history, non-fast forward updates were rejected.

Bunu nasıl düzeltebilirim?


Yanıtlar:


137

Önce değişiklikleri çekin:

git pull origin branch_name

1
Bu sorununuzu çözmezse, şu anda üzerinde çalıştığınız şubeyle aynı şubeye gittiğinizden emin olun. "Git statüsü" ile hangi şubede olduğunuzu kontrol edin.
afilina

1
Bu komut beni işe yaradı, ancak bilmek istiyorum, bu neden olmadı git pull:? Uzaktan eşittir originaslında çalışır, böylece: git pull origin. Tüm şubeleri güncellemeli mi?
Karlen Kishmiryan

84

Basmak istediğinizden eminseniz --force komutunu ekleyin. Örneğin kullanın git push origin --force(Komut satırı ile diğer kullanıcılardan çok daha fazla destek bulacağınız için komut satırını tavsiye ederim. Ayrıca SmartGit ile bu mümkün olmayabilir.) Daha fazla bilgi için bu siteye bakın: http://help.github.com/ uzaktan kumandalar /


8
--force sorunlarınızı çözecek, ancak potansiyel olarak başkalarına zarar verecektir. Yalnızca çok dikkatli (ve bilgi) kullanılmalıdır
schoetbi

7
-1 çünkü zorlamak, genel olarak konuşmak kötü bir fikirdir.
joshin4colours

6
+1 çünkü 5 kişi @ joshin4colours ile -1 vermeyi kabul etti. Ancak zorla itme her zaman en iyi fikir olmasa da (git, zorlamanızı reddederek bunu açıkça ortaya koymaktadır),% 100 kötü bir fikir olsaydı, seçenek mevcut olmazdı. Matt'in buradaki önerisi kesinlikle başkaları için faydalı olabilir.
user1271772

2
--forceBu dalı kullanan tek kişi sizseniz, kullanmaktan çekinmeyin . Diğer geliştiricilerle bir şube paylaşırken sorunlara neden oluyor.
Robert Brisita

22

İtmeden önce, rebase seçeneğiyle bir git pull yapın. Bu, çevrimiçi yaptığınız değişiklikleri (kaynağınızda) alacak ve bunları yerel olarak uygulayacak, ardından yerel değişikliklerinizi bunun üzerine ekleyecektir.

git pull --rebase

Şimdi, uzaktan kumandaya itebilirsiniz

git push 

Daha fazla bilgi için Git yeniden tabanında açıklanan ve Bölüm 3.6 Git Dallanma - Yeniden Oluşturma'ya bakın .


2
Benim durumumda git pull --rebase, There is no tracking information for the current branch. Please specify which branch you want to rebase against.
2013

17

Aynı hatayla karşılaştım, komuta sadece "--force" ekleyin , işe yarıyor

git push origin master --force

6
bunun bir sonucu var mı?
jayunit100

8
başkalarının taahhütlerini kaybetmek.
Giovanni Toraldo

1
Tuhaf bir durum yaşadım, burada tam olarak yapmak istediğim şey buydu ... yeni oluşturulmuş bir uzak ana dalın içeriğini yeni bir şeyle uçurmak. Bu benim sorunumu çözdü. Herkes için bir çözüm olmasa --forceda yardımcı olabilir.
Brad

1
Bu cevabın 6 kez düşürülmeyi hak ettiğini sanmıyorum. Bu, sağlanan soruna geçerli bir çözümdür, ancak yazar, bu komutun hangi koşullar altında faydalı olacağı konusunda biraz daha açıklayıcı olabilirdi. Yazmaya değer olduğu için bahsetmeye değerse (--force işlevi)
Aiden Strydom

5

Ben de aynı sorunu yaşadım.
Bunun nedeni, yerel şubemin bir şekilde uzaktaki muadiline olan takibi kaybetmesiydi.

Sonra

git branch branch_name --set-upstream-to=origin/branch_name
git pull

ve birleşen çatışmaları çözerken, zorlamayı başardım.


Uzak şubedeki değişiklikleri kaçırmışsınız gibi görünüyor
ozma

5

Komuta --force-with-lease ekleyebilirsiniz , çalışacaktır.

git push --force-with-lease

--force yıkıcıdır çünkü kayıtsız şartsız uzak deponun üzerine yerel olarak sahip olduğunuz her şeyi yazar. Ancak --force-with-lease, başkalarının çalışmalarının üzerine yazmamanızı sağlar .

Daha fazla bilgiyi burada görün .


1

(Bir) Netbeans 7.1 için Çözüm: Çekmeyi deneyin. Bu da muhtemelen başarısız olacaktır. Şimdi günlüklere bir göz atın (bunlar genellikle şimdi IDE'de gösterilir). Bir / daha fazla satır var:

"Bu dosya nedeniyle çekme başarısız oldu:"

Bu dosyayı arayın, silin (daha önce bir yedekleme yapın). Genellikle bir .gitignore dosyasıdır, bu nedenle kodu silmeyeceksiniz. İtmeyi yeniden yapın. Şimdi her şey yolunda gitmeli.


1

--rebaseSeçeneği kullanmak benim için çalıştı.

  • git pull <remote> <branch> --rebase

Ardından depoya itin.

  • git push <remote> <branch>

Örneğin

git pull origin master --rebase

git push origin master


0

Ben de aynı sorunu yaşadım. İle çözdüm

git checkout <name branch>
git pull origin <name branch>
git push origin <name branch>

3
OP, yerel kod değişikliklerini zorlamayı söylüyor. checkoutbu değişikliklerin üzerine yazacak veya en azından bunları push'a dahil etmeyecektir.
trejder

0

Bu benim için çalıştı. Git belgelerinde bulunabilir burada

İstediğiniz şubede iseniz bunu yapabilirsiniz:

git fetch origin
# Fetches updates made to an online repository
git merge origin YOUR_BRANCH_NAME
# Merges updates made online with your local work

0

Aynı problemle karşılaştım, çözmek için aşağıdaki gitkomutları çalıştırın .

  • git pull {url} --rebase
  • git push --set-upstream {url} master

Depoyu önce github'da oluşturmuş olmalısınız.


0

Bazen, gitten çekerken KAFA kopar. Bunu şu komutu girerek kontrol edebilirsiniz:

git branch 
  • (HEAD 8790704'ten ayrıldı)

    usta

    geliştirmek

Şubenize taşınmak ve ilgili şubenizden yeni bir çekiş yapmak daha iyidir.

git checkout develop

git pull origin develop

git push origin develop
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.