Uzun süredir kullanıyorum git stash pop
. Son zamanlarda git stash apply
komuta hakkında bilgi edindim. Denediğimde, aynı şekilde çalışıyor gibiydi git stash pop
.
Arasındaki fark nedir git stash pop
ve git stash apply
?
Uzun süredir kullanıyorum git stash pop
. Son zamanlarda git stash apply
komuta hakkında bilgi edindim. Denediğimde, aynı şekilde çalışıyor gibiydi git stash pop
.
Arasındaki fark nedir git stash pop
ve git stash apply
?
Yanıtlar:
git stash pop
uyguladıktan sonra (varsayılan olarak en üstteki) zulayı atar , oysa daha sonra yeniden kullanmak için git stash apply
saklamak listesinde bırakır (ya da daha sonra yapabilirsiniz git stash drop
).
Bu git stash pop
, sonradan çatışmalar olmadıkça gerçekleşir , bu durumda zulayı kaldırmaz ve tam olarak aynı şekilde davranmasını sağlar git stash apply
.
Ona bakmak için başka bir yol: git stash pop
bir git stash apply && git stash drop
.
git stash pop
sonuçla aynı olsa bile , yine de bir çakışma hatası alırsınız.
John Zwinck'in belirttiği ve bir dezavantaj olduğu gibi, farkı ifade eden bu yararlı bağlantı var git stash pop
.
Örneğin, saklanan değişikliklerin saklamanızı ilk oluşturduğunuzdan beri yaptığınız diğer değişikliklerle çakıştığını varsayalım. Hem pop hem de uygula, bu tür çatışmaları güzel bir şekilde çözmenize olanak tanıyan birleştirme çakışması çözümleme modunu faydalı bir şekilde tetikleyecektir ... ve belki de pop bekliyorsanız bile, her ikisi de saklılıktan kurtulamaz. Birçok insan zuvanaların sadece basit bir yığın olmasını beklediğinden, bu genellikle daha sonra aynı zulayı kazara atmalarına neden olur çünkü gittiklerini düşündüler.
Bağlantı: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
Eylemde görmek farkı daha iyi anlamanıza yardımcı olabilir.
master
Şube üzerinde çalıştığımızı ve hello.txt
"Merhaba" dizesi içeren bir dosyaya sahip olduğumuzu varsayarsak .
Dosyayı değiştirelim ve ona "world" dizesini ekleyelim. Şimdi yeni bulduğunuz küçük bir hatayı düzeltmek için farklı bir şubeye geçmek istiyorsunuz, bu yüzden stash
değişikliklerinize ihtiyacınız var :
git stash
Diğer şubeye geçtiniz, hatayı düzelttiniz ve şimdi master
şubeniz üzerinde çalışmaya devam etmeye hazırsınız , böylece pop
değişiklikler:
git stash pop
Şimdi saklanan içeriği incelemeye çalışırsanız şunları elde edersiniz:
$ git stash show -p
No stash found.
Ancak, git stash apply
bunun yerine kullanırsanız, saklanan içeriği alırsınız, ancak aynı zamanda saklarsınız:
$ git stash show -p
diff --git a/hello.txt b/hello.txt
index e965047..802992c 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello
+Hello world
Aynı pop
yığının patlaması gibi - aslında patladığında öğeyi kaldırır apply
, daha çok gözetime benzer .
Gelen git
stash akım değiştirilen dosyalar taşınabilir bir saklama alanıdır.
stash
alan, git
depodan bazı değişiklikler almak ve depoda bulunan bazı karşılıklı dosyalarda bazı değişiklikler algılamak istediğinizde kullanışlıdır git
.
git stash apply //apply the changes without removing stored files from stash area.
git stash pop // apply the changes as well as remove stored files from stash area.
Not: -
git apply
yalnızca uygulama sırasında saklanan alandaki değişiklikleri uygulayın ve alandaki değişikliklerigit pop
kaldırınstash
.
Git Stash Pop vs apply
Çalışması
En iyi saklanan değişikliklerinizi şu anda kullanılmayan değişikliklere uygulamak ve bu saklamayı da silmek istiyorsanız, devam etmelisiniz git stash pop
.
# apply the top stashed changes and delete it from git stash area.
git stash pop
Ancak, en üst düzeyde saklanan değişikliklerinizi silmeden mevcut aşamalı olmayan değişikliğe uygulamak istiyorsanız, o zaman gitmelisiniz git stash apply
.
Not: Bu durumu
Stack
sınıfınpop()
vepeek()
yöntemlerle ilişkilendirebilirsiniz; burada pop, üst kısmı azaltarak değiştirir (top = top-1), ancakpeek()
yalnızca üst öğeyi alabilir.