git kiraz-çekme çalışmıyor


111

Ustadan bir taahhüt seçip mevcut üretim dalına sokmaya çalışıyorum. Ancak, yürüttüğümde git cherry-pick <SHA-hash>, şu mesajı alıyorum:

# On branch prod_20110801
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#   site/test-result/
 nothing added to commit but untracked files present (use "git add" to track)
 The previous cherry-pick is now empty, possibly due to conflict resolution.
If you wish to commit it anyway, use:

    git commit --allow-empty

Otherwise, please use 'git reset'

Not: Bir sıfırlama ve sıfırlama (hard HEAD ^) yapmayı denedim ve ikisi de hiçbir şeyi değiştirmemiş gibiydi.

Bunun neden benim için çalışmadığı konusunda kafam karıştı.

Bunun nasıl çözüleceğine dair herhangi bir içgörü, tavsiye veya fikir yardımcı olacaktır ~!


Bu, yanlışlıkla yanlış işlemi seçmeye çalıştığımda başıma geldi. Gitk kullanırken bazen olur.
cst1992

Yanıtlar:


142

Git, bir işlem gerektirmeden seçmeyi çözüyor - bu işlemenin getirdiği tüm değişiklikler, mevcut şubenizdeki bazı işlemlerle tanıtıldı. (Ya da yine de Git'in düşündüğü şey budur.) Kiraz toplama işleminin, uygun bir birleştirme, yeniden sıralama / kiraz toplama veya parça parça yama olarak bir şekilde birleştirilmediğini doğrulayın. ( git show <commit-id>Farkı görmek için kullanın .)


16
Tavsiyen için teşekkürler, anlaşılan kiraz toplama işlemi çoktan yapılmıştı ve tek yapmam gereken onu github'a itmekti.
Jay Taylor

Doğru, commit-id verilen dosyaların içeriğini kontrol ettiğini fark etmemiştim. Günlükte commit-id'yi aramaya gittim ve bulamadım. zaten birleştirildiği ortaya çıktı.
mparaz

Ne yazık ki, söz konusu sorunun tek nedeni bu değil. Taahhüt ettiğimde, daha önceki bazı taahhütleri geri döndürdüğümde ve onu başka bir dalda seçtiğimde, geçmişte bu değişikliklerin geri döndürülmediği (yani, bu geri alınan taahhüdün hiç çekilmediği) tam olarak aynı duruma sahibim. ). Tabii ki bu benim hatam. Ancak bu durumda git'in çok akıllı olmaya çalışmak yerine çakışma durumuyla başarısız olması beklenir, bu da kullanıcının kafasının karışmasına neden olur.
Artem Pisarenko

Bu, bir birleştirme taahhüdünü geri döndürürseniz ve kirazla seçilen taahhüt, geri alınan dalda bulunuyorsa gerçekleşebilir.
mat

11

Belirli ben vardı kiraz kıracağıyla istediğini işlemek oldukça açıktı olarak benim durumda bu, beni deli gidiyordum değil benim şimdiki şube birleştirilecek olmuştur.

Birisi vardı çıkıyor zaten kiraz haftada öncesinde taahhüt aldı. Değişiklikler , ancak belirli SHA, benim geçerli dalda da vardı ve ben onları fark etmemişlerdi.

Seçmeye çalıştığınız dosya (lar) ı kontrol edin. Zaten değişikliklere sahiplerse, commit'in bir sürümü zaten kiraz olarak seçilmiş veya başka bir şekilde eklenmiştir. Böylelikle tekrar kiraz çekmeye gerek yoktur.


Eminim ki, belirli bir commit, bir kiraz kıracağı tarafından getirildiğinde dalınızda asla yoktur , çünkü kiraz çekme yeni bir karma olacaktır, değil mi? Yoksa yanlış mı anlıyorum?
msouth

@msouth Başlangıçta diğer cevaplardan aldığım şey "taahhüt zaten birleştirildi" idi, ancak şubemde olmadığını görebiliyordum . Yine de kiraz seçiminin her zaman yeni bir SHA olduğu konusunda haklısın.
pkamb

Evet, bunu yazdığım zaman "hash ile tanımlanan özel işlem" diye düşünüyordum. Dilim kesin değildi. git log --graph --pretty --decorate --onelineBelirli bir SHA'nın şubemde olup olmadığını görmek için sık sık çıktılarına bakıyorum . Taahhüt mesajının değişikliğin göstergesi olduğunu düşünerek nasıl karışabileceğinizi öğrenmek için aşağıdaki cevabıma bakın - öyle olmadığı bir durum var ve beni bu soruya başlangıçta yönlendiren de bu. Birinin beyni bu kısayolları yapma eğilimindedir ve bazen sizi ısırmak için geri gelebilirler.
msouth

6

Ayrıca .gitkeepağaca boş bir dosya eklemenin (örneğin ) kiraz-çekme tarafından boş bir tamamlama olarak değerlendirildiğini unutmayın.


Benim durumumda, kiraz çekme denememden önce bir geri dönüş taahhüdüm vardı (bu, boş bir kaydı geri döndürüyordu), bu yüzden boş-ish herhangi bir şeyin muhtemelen bu mesajın görünmesine neden olacağını tahmin ediyorum.
lidkxx

3

Öyleyse, işte bunun ortaya çıkabileceği Bir Başka Kafa Karıştırıcı Durum: Aşağıdakilere sahiptim:

git log ekran görüntüsü

Görünüşe göre hiçbir şey olmayan 9a7b12e kirazını seçmeye çalışıyordum - git log çıktısındaki o satırda bana 4497428'in gerçekten istediğim şey olduğunu söylemeye bile çalıştı. (Yaptığım şey sadece commit mesajını aradım ve ona sahip olduğunu gördüğüm ilk hashi aldım). Her neyse, sadece insanların kandırılmanın başka bir yolu olduğunu bilmelerini istedim.


10
Açıklama yapmadan olumsuz oy vermeniz pek yararlı değil - bu, aramamda bu soruyu bulmamı sağlayan bir sorunun tam olarak yeniden üretilmesidir. Bunu iyileştirmek için bir öneriniz varsa, lütfen olumsuz oy kullanmak yerine yorumlarda bana bildirin.
msouth
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.