Ne kadar uzakta olduğunuza ve onları hangi dallarda istediğinize bağlı olarak bir dizi farklı yol vardır.
Klasik bir hata yapalım:
$ git checkout master
... pause for coffee, etc ...
... return, edit a bunch of stuff, then: oops, wanted to be on develop
Yani şimdi Henüz hiç işlememiş olmaları bu değişiklikler, istediğiniz master
, üzerinde olmak develop
.
Eğer varsa yoksa bir develop
henüz, yöntem oldukça basittir:
$ git checkout -b develop
Bu, develop
şu an bulunduğunuz yerden başlayarak yeni bir şube oluşturur . Artık taahhütte bulunabilirsiniz ve yeni şeyler devam ediyor develop
.
Sen var bir develop
. Git'in hiçbir şey yapmadan geçiş yapmanıza izin verip vermeyeceğini görün:
$ git checkout develop
Bu başarılı olur ya da şikayet eder. Başarılı olursa harika! Sadece taahhüt et. Değilse ( error: Your local changes to the following files would be overwritten ...
), hala birçok seçeneğiniz vardır.
En kolayı muhtemelen git stash
(beni tıklatmaya vuran diğer tüm cevaplayıcıların postsöylediği gibi). git stash save
Veya git stash push
, 1 veya sadece / git stash
için kısa olan sade çalıştırın :save
push
$ git stash
Bu, garip bir şube-y yöntemi kullanarak kodunuzu (evet, gerçekten bazı taahhütler yapar) taahhüt eder. Yaptığı taahhütler herhangi bir dalda "açık" değildir, ancak artık depoda güvenli bir şekilde saklanır, böylece şimdi dallar arasında geçiş yapabilir, daha sonra zulayı "uygulayabilirsiniz":
$ git checkout develop
Switched to branch 'develop'
$ git stash apply
Her şey yolunda giderse ve sonuçları git stash drop
beğenirseniz, saklamak gerekir . Bu, garip şube olmayan y işlemlerine yapılan referansı siler. (Hala depodalar ve bazen acil bir durumda alınabilirler, ancak çoğu amaç için bu noktada gittiğini düşünmelisiniz.)
apply
Adım seyahatseverlerin Git güçlü yatan birleştirme makineleri, şube birleştirmeleri yaparken kullandığı şey aynı tür kullanılarak saklanmış değişikliklerin, bir birleştirme yapar. Bu, üzerinde çalıştığınız dal yanlışlıkla üzerinde çalışmayı düşündüğünüz daldan yeterince farklıysa "birleşme çatışmaları" elde edebileceğiniz anlamına gelir. Bu nedenle , Git'in herhangi bir birleştirme çatışması tespit etmemiş olsa bile , saklamanın temiz bir şekilde uygulandığını varsaymadan önce sonuçları dikkatlice incelemek iyi bir fikirdir .
Birçok kişi git stash pop
kısa süreliğine kullanır git stash apply && git stash drop
. Bu gittikçe iyi, ancak uygulama bir karmaşa ile sonuçlanırsa ve bu yolda ilerlemek istemediğinize karar verirseniz, saklamayı kolayca geri alamazsınız. Bu yüzden apply
, ayrı ayrı tavsiye ediyorum , sonuçları drop
sadece tatmin edildiyse / memnun kaldığımda kontrol ediyorum . (Bu elbette başka bir kahve molası verebileceğiniz ve ne yaptığınızı unutabileceğiniz, geri dönüp yanlış bir şey yapabileceğiniz başka bir noktayı tanıtmaktadır , bu yüzden mükemmel bir tedavi değildir.)
1save
içinde git stash save
yeni bir zulası oluşturmak için eski fiildir. Git sürüm 2.13, işleri daha tutarlı hale getirmek pop
ve create komutuna daha fazla seçenek eklemek için yeni fiili tanıttı . Git sürüm 2.16, eski fiili resmen kullanımdan kaldırmıştır (yine de, bunu düzenlerken en son sürüm olan Git 2.23'te çalışıyor).
git stash
git-scm.com/book/en/Git-Tools-Stashing