git隐藏popup和git隐藏之间的差异适用
我一直在使用git stash pop
很长一段时间。 我最近发现了关于git stash apply
命令。 当我尝试了它,似乎工作相同的git stash pop
。
git stash pop
和git stash apply
的区别是什么?
git stash pop
在应用它之后抛出(默认最上面的)存储,而git stash apply
将它留在存储列表中,以便稍后可以重用(或者你可以用git stash drop
它git stash drop
)。 这种情况下,除非git stash pop
后有冲突,在这种情况下,它不会删除存储,行为完全像git stash apply
。
另一种看待它的方式: git stash pop
是git 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
更像是偷看 。