git隐藏popup和git隐藏之间的差异适用

我一直在使用git stash pop很长一段时间。 我最近发现了关于git stash apply命令。 当我尝试了它,似乎工作相同的git stash pop

git stash popgit stash apply的区别是什么?

git stash pop在应用它之后抛出(默认最上面的)存储,而git stash apply将它留在存储列表中,以便稍后可以重用(或者你可以用git stash dropgit stash drop )。 这种情况下,除非git stash pop后有冲突,在这种情况下,它不会删除存储,行为完全像git stash apply

另一种看待它的方式: git stash popgit stash apply && git stash drop

得到这个有用的链接,指出了不同的地方,正如John Zwinck指出的那样,Git存储stream行的一个缺点。

例如,说你隐藏的变化与你自第一次创build隐藏以来所做的其他更改相冲突。 popup和应用都将有助于触发合并冲突解决模式,使您可以很好地解决这些冲突…即使也许你期待stream行,也不会摆脱存储。 因为很多人都认为藏獒只是一个简单的堆栈,这往往会导致他们后来意外地popup同样的藏匿处,因为他们认为它已经消失了。

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

git stash pop隐藏git stash pop应用顶部隐藏的元素,并从堆栈中删除它。 git stash apply保持不变,但将其留在存储堆栈中。

看到它在行动可能会帮助你更好地了解差异。

假设我们在master分支上工作,并且有一个包含“Hello”string的文件hello.txt

让我们修改文件并添加“世界”string。 现在,您要移动到其他分支来修复刚发现的小错误,因此您需要stash所做的更改:

 git stash 

你移到了另一个分支,修正了这个bug,现在你已经准备好继续在你的master分支上工作了,所以你pop了这个修改:

 git stash pop 

现在,如果您尝试查看隐藏内容,您将获得:

 $ git stash show -p No stash found. 

但是,如果你使用git stash apply ,你会得到隐藏的内容,但你也会保留它:

 $ 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 

所以pop就像堆栈的stream行 – 它实际上一旦被popup就删除元素,而apply更像是偷看