Saya telah menggunakan git stash pop
cukup lama. Saya baru-baru tahu tentang git stash apply
perintah. Ketika saya mencobanya, sepertinya berhasil sama git stash pop
.
Apa perbedaan antara git stash pop
dan git stash apply
?
Saya telah menggunakan git stash pop
cukup lama. Saya baru-baru tahu tentang git stash apply
perintah. Ketika saya mencobanya, sepertinya berhasil sama git stash pop
.
Apa perbedaan antara git stash pop
dan git stash apply
?
Jawaban:
git stash pop
membuang simpanan (paling atas, secara default) setelah menerapkannya, sedangkan git stash apply
menyimpannya di daftar simpanan untuk kemungkinan nanti digunakan kembali (atau Anda dapat melakukannya kemudian git stash drop
).
Ini terjadi kecuali jika ada konflik setelahnya git stash pop
, dalam hal ini tidak akan menghapus simpanan, membiarkannya berperilaku seperti itu git stash apply
.
Cara lain untuk melihatnya: git stash pop
adalah git stash apply && git stash drop
.
git stash pop
hasil, Anda masih akan mendapatkan kesalahan konflik.
Dapatkan tautan bermanfaat ini yang menyatakan perbedaannya, seperti yang dinyatakan John Zwinck dan kekurangannya git stash pop
.
Sebagai contoh, katakan perubahan simpanan Anda bertentangan dengan perubahan lain yang telah Anda buat sejak pertama kali Anda membuat simpanan. Baik pop dan apply akan membantu memicu menggabungkan mode resolusi konflik, memungkinkan Anda untuk menyelesaikan konflik seperti itu dengan baik ... dan tidak ada yang akan menghilangkan simpanan, meskipun mungkin Anda mengharapkan pop juga. Karena banyak orang berharap simpanan hanya tumpukan sederhana, ini sering menyebabkan mereka membuka simpanan yang sama secara tidak sengaja kemudian karena mereka pikir simpanan itu hilang.
Tautan: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
Melihatnya dalam tindakan mungkin membantu Anda lebih memahami perbedaan.
Dengan asumsi kami sedang mengerjakan master
cabang dan memiliki file hello.txt
yang berisi string "Halo".
Mari kita modifikasi file dan tambahkan string "world" ke dalamnya. Sekarang Anda ingin pindah ke cabang lain untuk memperbaiki bug kecil yang baru saja Anda temukan, jadi Anda perlu melakukan stash
perubahan:
git stash
Anda pindah ke cabang lain, memperbaiki bug dan sekarang Anda siap untuk terus bekerja di master
cabang Anda , sehingga Anda pop
berubah:
git stash pop
Sekarang jika Anda mencoba meninjau konten simpanan Anda akan mendapatkan:
$ git stash show -p
No stash found.
Namun, jika Anda menggunakan git stash apply
sebaliknya, Anda akan mendapatkan konten simpanan tetapi Anda juga akan menyimpannya:
$ 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
Jadi pop
sama seperti tumpukan pop - itu benar-benar menghapus elemen begitu muncul, sementara apply
lebih seperti mengintip .
In git
simpanan adalah area penyimpanan tempat file yang diubah saat ini dapat dipindahkan.
stash
area berguna ketika Anda ingin menarik beberapa perubahan dari git
repositori dan mendeteksi beberapa perubahan dalam beberapa file bersama yang tersedia di git
repo.
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.
Catatan: -
git apply
hanya menerapkan perubahan dari area simpanan sambilgit pop
menerapkan serta menghapus perubahan daristash
area.
Git Stash Pop vs apply
Bekerja
Jika Anda ingin menerapkan perubahan simpanan teratas Anda untuk perubahan yang tidak dipentaskan saat ini dan menghapus simpanan itu juga, maka Anda harus melakukannya git stash pop
.
# apply the top stashed changes and delete it from git stash area.
git stash pop
Tetapi jika Anda ingin menerapkan perubahan simpanan teratas Anda ke perubahan tidak dipentaskan saat ini tanpa menghapusnya, maka Anda harus melakukannya git stash apply
.
Catatan: Anda dapat menghubungkan kasus ini dengan
Stack
kelaspop()
danpeek()
metode, di mana pop mengubah bagian atas dengan penurunan (atas = atas-1) tetapipeek()
hanya bisa mendapatkan elemen atas.