Ne yazık ki bu bana oldukça düzenli bir şekilde oluyor ve daha git stash
önce hatamı fark ettiysem git commit
ve git cherry-pick
başka şekilde kullanırsam , her iki komut da diğer cevaplarda oldukça iyi açıklanır
Aşağıdakiler için açıklama eklemek istiyorum git checkout targetBranch
: Bu komut yalnızca targetBranch geçerli dalınızla aynı geçmişe sahipse çalışma dizininizi ve aşamalı anlık görüntünüzü koruyacaktır
Değişikliklerinizi henüz yapmadıysanız, yeni şubeye gitmek için git checkout'u kullanın ve ardından normal şekilde taahhüt edin
@ Amber'ın ifadesi yanlış değildir, bir newBranch'a geçtiğinizde , git checkout -b newBranch
yeni bir işaretçi oluşturulur ve geçerli dalınızla tam olarak aynı taahhüdü işaret eder.
Aslında, geçmişi mevcut şubenizle paylaşan başka bir şubeniz olduysa (her ikisi de aynı taahhütte) ve "değişikliklerinizi"git checkout targetBranch
Ancak, genellikle farklı dallar farklı geçmiş anlamına gelir ve Git kirli bir çalışma dizini veya hazırlama alanı ile bu dallar arasında geçiş yapmanıza izin vermez. bu durumda git checkout -f targetBranch
(temiz ve takas değişikliklerini) veya git stage
+ git checkout targetBranch
( değişiklikleri temizleyip kaydetme ) yapabilirsiniz, sadece çalıştırmak git checkout targetBranch
bir hata verecektir:
hata: Aşağıdaki dosyalarda yaptığınız yerel değişikliklerin yerine ödeme yapılarak yazılabilir: ... Lütfen şubeleri değiştirmeden önce değişikliklerinizi yapın veya saklayın. durduruluyor