@Bentolo'da belirtildiği gibi, şikayet ettiği dosyaları manuel olarak silebilir, şubeleri değiştirebilir ve ardından manuel olarak geri ekleyebilirsiniz. Ama ben şahsen "git içinde" kalmayı tercih ederim.
Bunu yapmanın en iyi yolu, zulayı bir dala dönüştürmektir. Bir dal olduğunda, bildiğiniz ve sevdiğiniz normal dalla ilgili teknikleri / araçları kullanarak git'te normal şekilde çalışabilirsiniz. Bu aslında listelenen hataya sahip olmasanız bile zulalarla çalışmak için yararlı bir genel tekniktir. İyi çalışıyor çünkü zula gerçekten kapakların altındaki bir işlemdir (bkz. PS).
Bir zulayı bir dala dönüştürmek
Aşağıdakiler, zula yaratıldığında HEAD'i temel alan bir dal oluşturur ve ardından zulayı uygular (onu kaydetmez).
git stash branch STASHBRANCH
"Zula dalı" ile çalışma
Bundan sonra ne yapacağınız, zula ile hedef şubenizin (ORİJİNALBRANCH diyeceğim) şu anda nerede olduğuna bağlıdır.
Seçenek 1 - Stash şubesini normal şekilde yeniden başlatın (saklamadan bu yana birçok değişiklik)
ORIGINALBRANCH'ınızda çok fazla değişiklik yaptıysanız, muhtemelen STASHBRANCH'a herhangi bir yerel şube gibi davranmak en iyisidir. Değişikliklerinizi STASHBRANCH'ta teslim edin, ORIGINALBRANCH'da yeniden başlatın, ardından ORIGINALBRANCH'a geçin ve STASHBRANCH değişikliklerini bunun üzerine yeniden bağlayın / birleştirin. Çatışmalar varsa bunları normal şekilde halledin (bu yaklaşımın avantajlarından biri çatışmaları görebilmeniz ve çözebilmenizdir).
Seçenek 2 - Orijinal şubeyi zulayla eşleşecek şekilde sıfırlayın (zuladan bu yana sınırlı değişiklikler)
Bazı aşamalı değişiklikleri saklarken zulalandıysanız, sonra taahhüt ettiyseniz ve tek yapmak istediğiniz ek değişiklikleri almaktır, zulalandığında yapılmamışsa, aşağıdakileri yapabilirsiniz. Çalışma kopyanızı değiştirmeden orijinal şubenize ve dizine geri dönecektir. Sonuç, çalışma kopyanızdaki ek zula değişiklikleriniz olacaktır.
git symbolic-ref HEAD refs/heads/ORIGINALBRANCH
git reset
Arka fon
Zulalar, dalları / etiketleri sever (yamalar değil)
Not: Bir zulayı bir yama olarak düşünmek caziptir (tıpkı bir commit'i bir yama olarak düşünmek gibi), ancak bir zula, yaratıldığında HEAD'e karşı yapılan bir işlemdir. / Pop uyguladığınızda, onu mevcut şubenize kiraz toplamaya benzer bir şey yapıyorsunuz. Dalların ve etiketlerin gerçekten sadece commitlere referans olduğunu unutmayın, bu yüzden birçok yönden zulalar, dallar ve etiketler bir commit'i (ve geçmişini) işaret etmenin farklı yollarıdır.
Çalışma dizini değişiklikleri yapmamış olsanız bile bazen gereklidir
PPS, Bu tekniğe --patch ve / veya --include-untracked ile sadece zulayı kullandıktan sonra ihtiyacınız olabilir. Çalışma dizinlerini değiştirmeseniz bile, bu seçenekler bazen tekrar uygulayamayacağınız bir zula oluşturabilir. Nedenini tam olarak anlamadığımı itiraf etmeliyim. Biraz tartışma için http://git.661346.n2.nabble.com/stash-refuses-to-pop-td7453780.html adresine bakın .