2013-05-31 15 views
17

Stashtan kiraz toplamanın mümkün olup olmadığını merak ediyorum. Ben command yukarıda çalışırkenGit setasından kiraz toplamak nasıl?

git stash save "test cherry-pick from stash" 

*git cherry-pick [email protected]{0}* --> Is this possible? 

aşağıdaki exception alıyorum:

Error:

~/Documents$ git cherry-pick [email protected]{0} 
error: Commit 4590085c1a0d90de897633990f00a14b04405350 is a merge but no -m option was given. 
fatal: cherry-pick failed 

cevap

23

Sorun, bir sakının iki veya üç işlemden oluşmasıdır. Stashing yaparken, değiştirilen çalışma ağacı bir taahhütte, indeks bir işlemde ve (eğer --include-untracked bayrağını kullanıyorsa) üçüncü bir işlenmemiş dosyalar içinde saklanır.

gitk --all'u kullanırsanız ve bir kayıt yaparsanız bunu görebilirsiniz.

enter image description here o çalışma ağacı içeren işlemeye

[email protected]{0} puan. Eğer

git cherry-pick "[email protected]{0}" -m 1 

yaparsanız

Bununla birlikte bundan kiraz seçim işleyebileceği

cherry-pick zula bir birleştirme ve dolayısıyla -m 1 parametre zulası multpile ebeveynler vardır taahhüt olmasıdır ihtiyacı olduğunu düşündüğü nedeni, Grafikte gördüğünüz gibi.

Kiralamak için tam olarak ne almak istediğinizden emin değilim. Olası bir alternatif, stastan bir dal yaratmaktır. Taahhüt orada değişiklikler yapın ve bunları mevcut şubenize birleştirin.

git stash branch stashchanges 
git commit -a -m "changes that were stashed" 
git checkout master 
git merge stashchanges 
+1

>> Kira çekmek için tam olarak neye ulaşmak istediğinizden emin değilim? - Benim durumumda, basit bir birleştirme, uygulama/pop uygulayarak iyi olurdu. Ama meraklı değişikliklerden birkaç değişiklik yapıp yapamayacağımı merak ediyordum. Cevabınız için teşekkür ederiz. –

-2

Bunu daha önce yapmadım. Ancak, vişne ağacı seçimindeki adam sayfası, bunun yalnızca taahhütler üzerinde çalıştığını söylüyor.

Given one or more existing commits, apply the change each one introduces, 
    recording a new commit for each. This requires your working tree to be 
    clean (no modifications from the HEAD commit). 

Stashing bir taahhüt değildir ve HEAD'i hareket ettirmez. Yani, bu yapılamaz [bu sadece bir tahmin olsa da]

+1

Aslında, yalnızca bir sakınca değil, aynı zamanda bir miktardır. Ancak genellikle günlüğe kaydetme araçlarıyla gösterilmezler. Cevabımı gör. –

İlgili konular