Egit, hızlı ileri sarmayı reddetti


89

Github deposuna bastırırken bu mesajı alıyorum. Düzeltmek için bana adım adım prosedürü söyleyebilir misin? Sadece bir kez ittim ve başarılı oldu. Ancak, bir projeyi güncellediğimde ve ikinci taahhüdümü zorlamaya çalıştığımda, "ana, ileri sarılmayan ana işlemi reddetti" gösteriyor ve zorlamama izin vermiyor. Lütfen prosedürü açıklayın.


"Bu depoyu bir README ile başlat" ile yeni bir depo oluşturduktan sonra da aynı sorunu yaşıyorum. Bunu kaldırdım ve bu chechbox olmadan tekrar oluşturdum.
Andrew

@andrew haklı
Dany Wehbe

Yanıtlar:


228

Ben de aynı sorunu yaşadım ve düzeltmeyi başardım. afk5min haklıydı, sorun, kodu aldığınız dalın o zamandan beri uzak depoda değişmiş olması. Standart git uygulamalarına göre ( http://git-scm.com/book/en/Git-Basics-Working-with-Remotes ), uzak depodaki bu değişiklikleri sizden önce yerel değişikliklerinizle (şimdi) birleştirmeniz gerekir. taahhüt edebilir. Bu mantıklıdır, bu sizi başkalarının değişikliklerini almaya ve bunları kodunuzda birleştirmeye zorlayarak kodunuzun diğer değişikliklerle birlikte çalışmaya devam etmesini sağlar.

Neyse, adımlara.

  1. Başlangıçta çektiğiniz dalı almak için 'getir'i yapılandırın.

  2. Uzak şubeyi getir.

  3. Bu uzak dalı yerel şubenizle birleştirin.

  4. Yerel deponuzda (birleştirme) değişikliği gerçekleştirin.

  5. Değişikliği uzak depoya aktarın.

Detayda...

  1. Eclipse'de, 'Git Depoları' görünümünü açın.

  2. Yerel deponuzu gördüğünüzden ve uzak depoyu bir alt klasör olarak görebildiğinizden emin olun. Benim versiyonumda buna Uzaktan Kumandalar deniyor ve sonra uzaktaki projeyi bunun içinde görebiliyorum.

  3. Sola işaret eden yeşil oku bulun, bu 'getir' oku. Sağ tıklayın ve 'Getirmeyi Yapılandır'ı seçin.

  4. URI'yi görmeli, uzak depoya işaret ettiğinden emin olmalısınız.

  5. Açılır pencerenin referans eşlemeleri bölümüne bakın. Benimki boştu. Bu, hangi uzak referansları almak istediğinizi gösterecektir. 'Ekle'yi tıklayın.

  6. Uzak depodan almanız gereken şube adını yazın. Benimki 'ustaydı' (btw, burada bir açılır menü harika olurdu !!, şimdilik yazmanız gerekiyor). Açılır pencerede devam edin ve sonunda 'Bitir'i tıklayın.

  7. "Kaydet ve Al" ı tıklayın. Bu, o uzak referansı getirecektir.

  8. Yerel deponuzun 'Dallar' klasörüne bakın. Şimdi uzak klasörde bu uzak dalı görmelisiniz. Yine 'usta' görüyorum.

  9. 'Ana' olarak adlandırılan 'Şubeler'in' Yerel 'klasöründeki yerel şubeye sağ tıklayın. 'Birleştir'i seçin ve ardından' kaynak / ana 'olarak adlandırılan uzak dalı seçin.

  10. Birleştirme yoluyla süreç.

  11. Yerel deponuzdaki değişiklikleri işleyin.

  12. Değişikliklerinizi uzak depoya aktarın.

  13. Kendinizi tebrik ederek lezzetli bir içecek alın. Günün geri kalanında izin al.


7
Bu cevap olarak işaretlenmelidir. Bir cazibe gibi çalıştı. Bu sorun, Eclipse'deki projem için GitHub'da depoyu oluştururken herhangi bir dosya (normal README dosyası) eklemediğim halde ortaya çıkıyor. Takip etmesi kolay adım adım açıklama için çok teşekkürler.
rbaleksandar

Bu sorunu çözmem, gönderinizi okuyana kadar bir yılımı aldı. Benim durumumda, uzaktan kumandam yoktu, ancak Eclipse 'kaynak' adında varsayılan bir tane oluşturdu.
Eugene van der Merwe

Tatlı, sonunda Eclipse ile birleşebilirim. Buradaki kilit nokta, birleştirmeyi yapmak için Git Depoları görünümünü kullanmaktır, normal Takım Senkronizasyonu görünümünü kullanmaktır. Ekipte eGit'in hiçbir şey yapmayan tüm seçenekleri devre dışı bırakması iyi olurdu.
dan carter

1
Bu işe yarasa da, gereksiz bir birleştirme taahhüdü yaratır. Burada rebase kullanmalısınız, bu iyi çünkü değişiklikleriniz yalnızca yereldir, bu nedenle yayınlanan herhangi bir geçmişi değiştirmezsiniz (ve bunu yaparsanız, git yine de hızlı ileri olmayan bir itme için size bağırırdı). MYN'nin cevabını beğendim.
nyuszika7h

1
Projeye sağ tıklayın ve ardından Mergeana push branch Master
dosyaya

16

Benim durumumda Force Updateiterken onay kutusunu seçtim . Büyüleyici çalıştı.


Bu benim için de çalıştı. Bir taahhüdü "değiştirdikten" sonra OP'nin koşuluna sahiptim. Ve getir bana "getirecek hiçbir şey" verdi
Twilite

11

Bu arada (siz projenizi güncellerken) 'ana' şubeye başka taahhütler yapılmıştır. Bu nedenle, değişikliklerinizi zorlayabilmek için önce bu değişiklikleri almanız gerekir.


4
bu durumda git oldukça aptal, tüm değişiklikleri uzaktan kumandaya ittim. ve proje üzerinde çalışan tek kişi benim. Neden tekrar basmadan önce uzaktan kumandayı çekmem gerekiyor ???? çekilen değişiklik orijinal olarak bölgemden gelecekti
Junchen Liu

7

Eclipse Luna + Eclipse Git 3.6.1 için geçerlidir

BEN,

  1. klonlanmış git deposu
  2. kaynak kodda bazı değişiklikler yaptı
  3. Git Staging View'dan aşamalı değişiklikler
  4. son olarak, commit ve Push!

Ve bu sorunla EGit ile karşılaştım ve işte bunu nasıl düzelttim ..

Evet, ben değişiklikleri yapmadan önce birisi değişiklikleri yaptı. Yani değişiklikler reddedildi. Bu hatadan sonra, değişiklikler fiilen yerel depoya işlenir. Sadece Pulldeğişiklikleri yapmak istemedim çünkü linear historybelirtildiği gibi devam ettirmek istedim - Hangi durumlarda "git pull" zararlı olabilir?

Bu yüzden aşağıdaki adımları uyguladım

  1. Git Deposu perspektifinden ilgili Git
    projesine sağ tıklayın
  2. select Fetch from Upstream- uzak güncellemeleri alır (referanslar ve nesneler) ancak yerel olarak güncelleme yapılmaz. daha fazla bilgi için bakın 'git pull' ve 'git fetch' arasındaki fark nedir?
  3. seçin Rebase...- bu bir açılır pencere açar, Preserve merges during rebasebakın neden
    git'in "rebase --preserve-merges" tam olarak ne yapıyor (ve neden?)
  4. tıklamak Rebase button
  5. a varsa / varsa conflict(s), 6. adıma gidin, aksi takdirde adım 11
  6. bir Rebase Resultaçılır pencere görünecektir, sadece tıklayınOK
  7. file comparatoraçılırsa, değiştirmeniz gerekir left side file.
  8. Değişiklikleri doğru bir şekilde birleştirmeyi tamamladığınızda, Git Staginggörünüme gidin
  9. stage the changes. yaniadd to index
  10. aynı görünümde Rebase-> üzerine tıklayın Continue. tüm çatışmalar çözülene kadar 7 ila 10'u tekrarlayın.
  11. dan Historygörünümü, sizin seçmek satır işlemek ve seçmekPush Commit
  12. Rebase Commits of local.......onay kutusunu seçin ve ileriye tıklayın. nedenine bakın - Git: yukarı akıştan geliştirme dalına yeniden taban
  13. tıklamak Finish

Not: Birden fazla yerel depo kaydınız varsa, birden fazla birleşmeyi önlemek için bunları tek işlemede ezmeniz gerekir.


Birleştirme yerine yeniden temel almayı kabul ediyorum. Gereksiz bir birleştirme taahhüdü oluşturmadığı için daha iyidir. (Konu dışı: Stack Overflow tamamen gülünç
davranıyor ve yorumumu

4

Yapılandır Reddedilen bir mesaj aldığınızda kodu gönderdikten sonra, yapılandır'a tıklayın ve bu resimde gösterildiği gibi Özellik ekle'ye tıklayın.

Kaynak ref ve Hedef ref Açılır ve referans / başlıklar / dal adınıza tıklayın ve tekrar Özellik Ekle'ye tıklayın

görüntü açıklamasını buraya girin Zorla güncellemeyi seçtiğinizden emin olun

görüntü açıklamasını buraya girin Sonunda kodu depoya kaydedin ve itin


3

Git görünümünü aç:

1- Projenizi seçin ve birleştirmeyi seçin 2- Uzaktan izlemeyi seçin 3- Tamam'a tıklayın

Git uzak dalı yerel depoyla birleştirecek

4- sonra itin


2

Bu hata, uzak deponun başka işlemlere sahip olduğu ve yerel şubenizin ilerisinde olduğu anlamına gelir.
Git çekme ve ardından git itme yapmayı deniyorum. Çakışan değişiklikler yoksa git pull, değişikliklerimi olduğu gibi tutarken yerel şubemden en son kodu alır.
Sonra bir git push, değişikliklerimi ana dala gönderir.


pek çok insan bu basit çözümü kaçırıyor gibi görünüyor: D
Siyah

0

Git'in son taahhüdünde olmanız gerektiğini anladım. Dolayısıyla, atmanız gereken adımlar şunlardır: 1) aynı dosyalar üzerinde çalışmadığınızdan emin olun, aksi takdirde bir DITY_WORK_TREE hatasıyla karşılaşırsınız. 2) en son değişiklikleri alın. 3) güncellemelerinizi uygulayın.

Bu yardımcı olur umarım.


-1
  1. Github'a gidin ve yeni kodunuz için bir depo oluşturun.
  2. Yukarı akışa zorlama yaparken Eclise'de yeni https veya ssh url'sini kullanın;
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.