Git stash pop-birleştirme ihtiyacı var, dizin yenilenemiyor


116

Zulamı patlatamıyorum çünkü görünüşe göre zulamla çelişen bir dalı birleştirdim ve şimdi zulam görünüşte patlatılamaz.

app.coffee: needs merge
unable to refresh index

Bunu nasıl çözeceğini bilen var mı?

SABİT!

Asıl sorunun, zulanın bir birleştirme çatışmasına neden olacağı DEĞİL , birleştirmeden kaynaklanan çözülmemiş bir birleştirme çatışması olduğu ortaya çıktı.

Çözüm: Çakışan dosyayı işleyin.


6
Asıl çözüm oldukça kolayken kabul edilen cevabın karmaşık olması ilginçtir : Çakışan dosyayı işlemeniz bile gerekmez, onu eklemeniz gerekir.
Javi V

3
Cevabınızı soruda değil cevap olarak ekleyin.
Siyah

Yanıtlar:


67

İlk önce kontrol edin git status.
OP'nin bahsettiği gibi,

Asıl sorun, zulanın bir birleştirme çatışmasına neden olacağı DEĞİL, birleştirmeden kaynaklanan çözülmemiş bir birleştirme çatışmasıydı.

Bu git statusdosyanın " both modified" olduğunu söyleyeceğiniz yer burasıdır.

Çözüm: Çakışan dosyayı işleyin.


Benzer bir durumu 4 gün önce bu cevabı yazdığınız sırada (13 Mart 2012) şu gönderiyle bulabilirsiniz: " 'Birleştirilmemiş dosyalarınız olduğu için çekme mümkün değil' ":

julita@yulys:~/GNOME/baobab/help/C$ git stash pop
help/C/scan-remote.page: needs merge
unable to refresh index

Yaptığınız şey birleştirme çakışmasını düzeltmekti (doğru dosyayı düzenleme ve işleme koyma):
Bkz. " Git'te birleştirme çakışmalarını nasıl düzeltirim? "

Blog gönderisinin yazarının yaptığı şey şuydu:

julita@yulys:~/GNOME/baobab/help/C$ git reset --hard origin/mallard-documentation
HEAD is now at ff2e1e2 Add more steps for optional information for scanning.

Yani, mevcut birleştirmeyi tamamen iptal ederek git stash popuygulanmasına izin verir .
Bkz. " Git'te bir birleştirmeyi iptal etme ".

Bunlar sizin iki seçeneğiniz.


1
Bazen başka bir daldayız da oluyor. Örneğin, A şubem var ve bazı değişiklikler yaptım ve B şubesine geçtim ve değişiklikler yapıp taahhüt ettim. Şimdi A şubesine gitmek istiyorum, ancak A'yı kontrol etmeyi ve zulayı uygulamaya çalışmayı unuttum. Bu durumda da aynı sorunu veriyor. Yukarıdaki davada bu sorunla karşılaştım.
Kapil Verma

Her şeyi taahhüt ettim ama 'git bash pop' bu çatışmaları geri getiriyor. Şu anki beklemede değişiklik yapmak istemediğim halde neden yine de taahhüt etmem gerektiğini anlamıyorum. Sadece saklanan şubeye geri dönmek istiyorum.
Philip Rego

@PhilipRego git bash pop? veya git stash pop? Git stash kullanmak yerine zulayı kontrol etmeyi deneyin: stackoverflow.com/a/16625128/6309
VonC

Üzgünüm, 'git stash pop' demekti Zulayı zaten düşürdüm, ancak bir dahaki sefere bu sorunu yaşadığımda deneyeceğim. Teşekkürler
Philip Rego

14

Bu sorunu yaşıyordum, sonra çatışmayı çözüyordum ve git stash poptekrar yapıyordum ve tekrar yapmak aynı zulayı tekrar geri getiriyordu (aynı çatışmaya neden oluyordu :-().

Yapmam gereken şey (UYARI: önce zulanızı yedekleyin) git stash dropondan kurtulmak.


4
Bu zulamdan kurtuldu. Ona geri dönmek istedim.
Philip Rego

3
İhtiyacım olan cevap bu, ancak bunu gören diğer insanlara göre, sakladığınız değişiklikleri kaybedeceksiniz. İlk zulayla ilgili sorunlar yaşıyorsanız, ancak daha derin ikinci düzey saklanan değişikliklerinizi uygulamak için gerçekten ilk zuladan kurtulmak istiyorsanız bu yararlıdır.
Corey Schnedl

9

Kabul edilen cevaptan çok daha basit. Gerek:

  1. git statusAltındaki birleştirilmemiş yolları kontrol edin . Çatışmaları düzeltin. Daha sonra yapmayı tercih ederseniz bu adımı atlayabilirsiniz.

  2. Kullanarak indekslemek için tüm bu dosyaları birleştirilmemiş yollar altına ekleyin git add <filename>.

  3. Şimdi yap git stash pop. Herhangi bir çatışma ile karşılaşırsanız, bunların tekrar çözülmesi gerekecektir.


6
Bu tekrar tekrar aynı çatışmaya yol açar.
NaN

7

Sorunu şu şekilde çözdüm:

  • git durumu (önceki bir zula, çekme, zula pop ve devam eden çalışma dosyalarının bir karışımını görün.)
  • git stash (ihtiyaç birleştirme sorununa bakın)
  • git ekle. (dosyaları ekleyin, böylece çalışmam yerel olarak birleştirdiğimi çözer)
  • git stash (hata yok)
  • git çekme (hata yok)
  • git stash pop (hata yok ve çalışmaya devam edin)

1
Teşekkürler ! bu bana yardımcı olur.
Julien Baldy

1
Mükemmel, git add .taahhütte bulunmadan sorunu benim için düzeltir.
Paul Carlton

5

Birleştirme / çatışma / eylem dışında bu sorunu yaşayan biri varsa, soruna neden olan projeniz için git lock dosyası olabilir.

git reset
     fatal: Unable to create '/PATH_TO_PROJECT/.git/index.lock': File exists.
rm -f /PATH_TO_PROJECT/.git/index.lock
git reset
git stash pop

1
Emirden biraz korkuyorum reset. Bunun neden işe yarayacağını açıklayabilir misiniz?
SMBiggs

1

En iyi çözümün zulanızı dağıtmak ve daha sonra bir çözüm bulmak olduğunu buldum.

git stash branch <branch-name>

Zulanızı temizlemekten vazgeçerseniz, değişikliklerinizi kaybedebilirsiniz ve yeniden günlüğe kaydetmeniz gerekecek.


1

app.coffeeEvrelemeye eklemeniz gerekiyor .

Yapın git add app.coffeeve sonra zulanızı uygulayabileceksiniz (bu işlemden ve itmeden sonra).


0

Zula zaten diğer dosyalara uygulanmıştır.

Sadece app.coffeemanuel olarak birleştirmeniz gerekiyor. Daha sonra koş

git sıfırla

değişiklikleri aşmak ve hacklemeye devam etmek.


0

Ben de aynı sorunla karşı karşıyaydım çünkü geliştirme şubemde bazı değişiklikler yaptım ve ardından profil şubesine gitmek istiyorum. bu yüzden değişiklikleri sakladım

git stash

daha sonra profil dalında da bazı değişiklikler yaptım ve geliştirmeye tekrar geri dönmek istiyorum, bu yüzden değişiklikleri tekrar saklamak zorundayım.

 git stash

ama şube geliştirmeye geldiğimde ve gitmeye çalıştığımda zula değişiyor

git stash apply

bu yüzden birleştirme gerekli hata alıyordum

Bu sorunu çözmek için önce zula listesini kontrol etmeliyim.

git stash list

bu yüzden benim durumumda zulaların listesini gösteriyor, zulaların adı bu zula @ {0}, zula @ {1} gibi görüntüleniyordu

Stash @ {1} 'de değişikliklere ihtiyacım var, bu yüzden bu komutla almaya çalıştığımda

git stash apply stash@{1}

bu yüzden alma hatalarının birleştirilmesi gerekiyordu

şimdi bu sorunu çözmek için dosyalarınızın durumunu kontrol edin

git status

bu yüzden bu çalışmayı çözmek için "her ikisi de değiştirildi" hatası veriyordu.

git add .

eksik değiştirilmiş dosyaları ekleyecek şimdi durumu tekrar kontrol edin

git status 

yani şimdi hiçbir hata yok artık zula uygulayabilir

git stash apply stash@{1}

bu işlemi istediğiniz sayıda zula dosyası için yapabilirsiniz.

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.