! [reddedildi] ana -> ana (önce getir)


102

! [rejected] master -> master (fetch first)'Git'te " " nasıl çözümleneceğini açıklamanın iyi bir yolu var mı ?

Bu komutu kullandığımda $ git push origin masterbir hata mesajı görüntülüyor.

! [rejected]        master -> master (fetch first)
error: failed to push some refs to 'git@github.com:zapnaa/abcappp.git'

Yanıtlar:


133

Cevap orada, git önce getirmeni söylüyor.

Muhtemelen başka biri zaten ustalaşmaya zorladı ve taahhüdünüz geride kaldı. Bu nedenle, değişiklik kümesini getirmeniz, birleştirmeniz gerekir ve ardından tekrar itebileceksiniz.

Yapmazsanız (veya daha da kötüsü, --forceseçeneği kullanarak zorlarsanız ), commit geçmişini bozabilirsiniz.

DÜZENLEME: Buradaki bir adam --forceseçeneği kullanmak için Çok Kötü Tavsiye verdiğinden, son nokta hakkında daha fazla ayrıntıya giriyorum .

Git bir DVCS olduğundan, ideal olarak diğer birçok geliştirici, aynı depoyu (veya bir çatalını) kullanarak sizinle aynı proje üzerinde çalışıyor. Değişiklik kümenizle zorla üzerine yazarsanız, deponuz diğer insanlarınkiyle uyuşmaz çünkü "tarihi yeniden yazdınız". Başkalarını mutsuz edeceksiniz ve arşiv zarar görecektir. Muhtemelen dünyadaki bir kedi yavrusu da ağlayacaktır.

TL; DR

  1. Çözmek istiyorsanız, önce getirin (ve sonra birleştirin).
  2. Hacklemek istiyorsanız --forceseçeneği kullanın.

Yine de eskisini istedin. Git'i her zaman tek başınıza kullanacak olsanız bile, her zaman 1) 'e gidin, çünkü bu iyi bir uygulamadır.


5
Yerel dosyalardaki önemli değişiklikleri silemiyor musunuz?
Leonardo Castro


@dhein yazdığım gibi, getirme işleminin ardından bir birleştirme gelmelidir - önemli olan, yerel ağacı uzaktaki ağaçla (dolayısıyla birleştirmeyle) "hizalamanız" gerektiğidir - ama teşekkürler, bunu TL cinsinden yazdım; DR de
linuxbandit

89

Deneyin:

git fetch origin master
git merge origin master

Bu kodu yazdıktan sonra başka bir hata aldım: (hızlı ileri sarma)

Bu kodu yazıyorum:

git fetch origin master:tmp
git rebase tmp
git push origin HEAD:master
git branch -D tmp

Ve sorunumu çözdüm


Benim için aynı. Bu benim sorunumu çözdü. Birkaç uyarı var. Bir alt depoyu karıştırdım, ancak bununla
M. Beausoleil

1
@Aurelio A Birleştirme komutunuz yanlış, yanlış olmalı git merge master.
mike

Neden git branch -D tmp kullanmamız gerekiyor?
Милош Вељковић

27

Kullanmalısınız git pull, bu komut do a git fetchve sonra yapın git merge.

Bir git push origin master --forcekomut kullanırsanız , ileride sorun yaşayabilirsiniz.


1
Projedeki tek kişi sizseniz ve ilk vuruşunuzu yapmaya çalışırken hayal kırıklığına uğruyorsanız, yalnızca --force kullanmanız gerektiği doğru mu?
chrips

20

pull her zaman doğru yaklaşımdır ancak bir non-Git dosya sistemini Github deposuna dönüştürmeye çalışırken bir istisna olabilir. Orada ilk taahhüdü zorlamanız gerekir.

git init
git add README.md
git add .
git commit -m "first commit"
git remote add origin https://github.com/userName/repoName.git
git push --force origin master

benim için çalışıyor, yine yeni bir projeye başladım (aynı repo) ve değiştirmek istedim.
ucotta

18

Bu git komutunu deneyin

git push origin master --force

veya güçsüz -f

git push origin master -f


2
Bu, git push kısıtlamasını geçersiz kılar. Takım çalışması için tavsiye edilmez. Git itme belgelerinden: Eğer yeniden adlandırma yaparken orijinal geçmişinizin üzerine başka biri inşa ederse, uzaktaki şubenin ucu onun taahhüdüyle ilerleyebilir ve --force ile körü körüne zorlamak işini kaybedecektir .
Casey

10

Hata mesajında ​​belirtildiği gibi "önce getirmeniz" gerekir. Bu benim için çalıştı. Şu komutu kullanın:

  1. git fetch origin master

Ardından birleştirmek için şu adımları izleyin:

  1. git pull origin master
  2. git add .
  3. git commit -m 'your commit message'
  4. git push origin master

4

Lütfen çözmek için bu komutu deneyin -

git push origin master --force

Veya

 git push origin master -f


3

Benim de aynı sorunu yaşadığım için aşağıda verilen adımları izleyin:

$ git pull origin master --allow-unrelated-histories 

(Yerel şubenin uzak olanla kolayca birleştirilip birleştirilemeyeceğini görmek için)

$ git push -u origin master 

(Şimdi yerel git deposunun tüm içeriğini çevrimiçi deponuza gönderin)


2

Muhtemelen bir başkası (örneğin meslektaşınız) origin/masteryerel masterşubenizde olmayan taahhütler koymuştur ve yerel şubenizden sunucuya bazı taahhütler göndermeye çalışıyorsunuz. Vakaların% 99'unda, çalışmalarını silmek istemediğinizi varsayarsak origin, iki seçeneğiniz vardır:

2) Değişikliklerini yerel şubenizde birleştirin ve ardından birleştirilmiş sonucu itin. git checkout master git pull # resolve conflicts here git push

( Bu durumda git pullesasen sadece a git fetchve a olduğunu unutmayın git merge.)

1) İş arkadaşınız önce taahhütlerini yapmış gibi görünecek şekilde yerel şubenizi yeniden destekleyin, sonra siz taahhütlerinizi yaptınız. Bu, kaydetme geçmişini güzel ve doğrusal tutar ve "birleştirme işleminden" kaçınır. Bununla birlikte, meslektaşınızın değişiklikleriyle çelişki yaşıyorsanız, en kötü durumda, her bir taahhüdünüz için (bir kez yerine) bu çatışmaları çözmeniz gerekebilir. Esasen bu herkes için daha güzel ama sizin için daha fazla çaba. git pull --rebase # resolve conflicts here git push

(Bunun git pull --rebaseesasen a git fetchve a olduğunu unutmayın git rebase origin/master.)



1

Sizin hatanız birleştirme dalı yüzünden olabilir.
Sadece şunu takip edin:

1. adım: git pull origin master(herhangi bir mesaj alırsanız, dikkate almayın)
2. git add .
adım: 3. git commit -m 'your commit message'
adım: 4. adım:git push origin master


1

Önce kullanmalı git pull, sonra komut yapmalısınızgit fetch git birleştirmeyi yapmalısınız.

Bir git push origin master --forcekomut kullanırsanız , ileride sorun yaşayabilirsiniz.


1

Bunun üstesinden yeni bir şubeye şöyle bir göz atarak geldim:

# git checkout -b newbranch <SHA of master>

# git branch
* newbranch
  master

# git push -u <repo_url_alias> newbranch

Size daha sonra birleştirebileceğiniz 2 şube: Master ve newbranch.


0

Uzak adınızla birlikte şube adınızı belirtmeniz yeterlidir.

git fetch origin
git merge origin/master

0

Benim durumumda olmasının nedeni GitHub rep bağlantısını oluştururken bunu README dosyasıyla başlattım.

Git uzaktan kumandasını oluştururken onu README dosyasıyla başlatmayın, aksi takdirde hata gösterecektir.

Bunu yapmayın ve kesinlikle iyi çalışacaktır. Bunun yerine, ana dala gönderdikten sonra isterseniz benioku dosyasıyla başlatın.



0

--force seçenek benim için çalıştı kullandım git push origin master --force


0

görüntü açıklamasını buraya girin

! [reddedildi] ana -> ana (önce getir) hatası: bazı referanslar 'git@github.com:' adresine gönderilemedi

görüntü açıklamasını buraya girin

--Force komutunu kullanarak sorun başarıyla çözüldü . bu yüzden
git push origin master --force kullanmalısınız



-1

bu benim için çalışıyor

  1. git init

  2. git add - hepsi

3.git commit -m "ad"

4.git itme kökeni ana - kuvvet


-1

Bu benim için çalıştı:

$ git add .
$ git commit -m "commit"
$ git push origin master --force


-1

Sorun çözüldü

Yaşadığım sorun

! [rejected]        master -> master (non-fast-forward) error: failed to push some refs to 'https://github.com/repo_name/repo-hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g.hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Bende de aynı sorun vardı. Sorun şu ki, commitsdiğer depolarda başarılı olmadı, pushedbu nedenle aşağıdaki komutları çalıştırmanız gerekiyor:

  1. git fetch origin master

    çıktı: From https://github.com/username/repo-name * branch master -> FETCH_HEAD

  2. git merge origin master

    çıktı: Merge made by the 'recursive' strategy. repo-name/ReadMe.md | 1 - 1 file changed, 1 deletion(-)

  3. git push

    çıktı: Enumerating objects: 8, done. Counting objects: 100% (8/8), done. Delta compression using up to 8 threads Compressing objects: 100% (6/6), done. Writing objects: 100% (6/6), 1.00 KiB | 1.00 MiB/s, done. Total 6 (delta 2), reused 0 (delta 0) remote: Resolving deltas: 100% (2/2), completed with 1 local object. To https://github.com/user_name/repo-name.git 0852d5vf..70v56d9 master -> master

Çok teşekkür ederim

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.