git stash pop 和 git stash 之间的区别适用

我已经使用git stash pop已有一段时间了。我最近发现了有关git stash apply命令的信息。当我尝试时,它似乎与git stash pop相同。

git stash popgit stash apply什么区别?

答案

git stash pop 在应用后丢弃 (默认情况下,最顶部)存储,而git stash apply 会将其保留在存储列表中,以备日后重用(或者您可以将git stash drop )。

除非git stash pop之后存在冲突,否则这种情况会发生,在这种情况下,它将不会删除该 stash,而使其行为与git stash apply完全相同。

另一种查看方式: git stash popgit stash apply && git stash drop

正如 John Zwinck 所说,获得了一个有用的链接,该链接指出了不同之处,以及 Git 隐藏流行的缺点。

例如,假设您的隐藏更改与您自首次创建存储以来所做的其他更改冲突。 pop 和 apply 都将有助于触发合并冲突解决模式,使您能够很好地解决此类冲突…… 而且即使您希望 pop 进入,也不会摆脱任何隐藏。由于许多人期望存储区只是一个简单的堆栈,因此这常常导致他们后来意外弹出同一存储区,因为他们认为存储区已消失。

链接http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/

git stash pop应用顶部隐藏的元素并将其从堆栈中删除。 git stash apply作用相同,但将其保留在 stash 堆栈中。

git stash
git stash pop
$ git stash show -p
No stash found.
$ 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
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.
# apply the top stashed changes and delete it from git stash area.
git stash pop