23 Ağustos 2018 Perşembe

$git stash Neden kullanılır ve Nasıl kullanılır?

     $git stash, o anki çalışma dizininizin durumunu ve index ini kaydedip daha sonra değişiklikleri geri getirmemizi sağlayan bir komuttur.

 Şöyle ki: bulunduğum projede bir takım değişiklikler yapıyorum. Bu değişiklikleri göndermeden önce projenin güncel halini çekmek istiyorum. $git pull komutunu girdikten sonra birde ne göreyim, conflict hatası ile karşı karşıyayım. Benim değişiklik yaptığım yerde daha önceden bir değişiklik olmuş ve bu yüzden bir çakışma mevcut. Bu sorunu halletmenin kısa yolu ise şöyle:

Var olan değişikliklerimiz $git status ile görüntülüyoruz:



Bu değişiklikleri $git stash diyerek kaydettik. 




Tekrar $git status yaptığımızda yerinde yok. Peki nerede?



 Tabi ki değişikliklerimiz burada. $git stash list yapılan değişiklikeri "WIP on <branchname>" mesajı ile görüntülüyoruz. 



 Tekrar değişiklik yapıp bu değişiklikleri kaydetmek istediğimizde $git stash komutunu kullanabiliriz.  
stash@{0} ve stash@{1}  olmak üzere iki tane değişikliğimiz kaydedilmiş olur. $git stash list çıktısı aşağıdaki gibi olur. 

Değişiklikleri geri getirmek için iki komut kullanılır. 
$git stash pop stash@{<revision>} ve 
$git stash apply  stash@{<revision>}
  Farkları ise  pop değişikliği geri getirdikten sonra listeden siler, apply listeden silmez.



Kaydedilen değişikliklerin farklarını görmek için: $git stash show -p 




Eğer "stash@{0}: WIP on <branchname>" mesajını değiştirmek istiyorsak:

Dosyada değişikliği yaptıktan sonra $git stash save "buraya mesaj gelecek" komutunu yazarak yazılan mesaj ile değişikliği kaydeder. Ekstra $git stash komutunu kullanmamıza gerek yok.



Değişikliği listeden silmek için: $git stash drop stash@{<revision>} 

Tüm değişiklikleri silmek için: $git stash clear