我一直在使用git stash pop
很长一段时间。我最近发现了关于git stash apply
命令。当我试用它时,它看起来和git stash pop
一样。git stash pop和git stash之间的区别适用
git stash pop
和git stash apply
有什么区别?
我一直在使用git stash pop
很长一段时间。我最近发现了关于git stash apply
命令。当我试用它时,它看起来和git stash pop
一样。git stash pop和git stash之间的区别适用
git stash pop
和git stash apply
有什么区别?
git stash pop
应用它后扔掉的(最上面的,默认情况下)藏匿,而git stash apply
它保留在可能的以后再使用藏匿列表(或者你可以再git stash drop
它)。发生这种情况除非git stash pop
之后有冲突,在这种情况下,它不会删除存储,其行为完全像git stash apply
。
看看它的另一种方法:git stash pop
是git stash apply && git stash drop
。
git stash pop
应用顶部装入的元素并将其从堆栈中移除。 git stash apply
也一样,但将其留在储藏箱中。
得到了这个有用的链接,指出了差异,正如John Zwinck指出的那样,以及Git存储流行的缺点。
例如,说你的隐藏更改与你自第一次创建隐藏以来所做的其他更改相冲突。弹出和应用都将有助于触发合并冲突解决模式,使您可以很好地解决这些冲突......并且即使您希望流行,也不会摆脱隐藏。由于很多人都认为藏獒只是一个简单的堆栈,这往往会导致他们后来不小心弹出同样的藏宝箱,因为他们认为它已经不存在了。
链接http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
这真的很有帮助。我遇到了一个冲突流行,后来,想知道为什么藏匿仍然列在藏匿名单 – Kashif 2014-11-20 22:31:32
当我不小心把一个错误的分支藏在顶端时,这真的很有帮助。 – Rahi 2015-06-03 16:12:50
当一个流行音乐失败时,一个藏匿的事实并不是一个缺点,尽管它起初看起来似乎是这样。 – Amalgovinus 2017-12-15 21:56:56
在行动中看到它可以帮助你更好地理解差异。
假设我们正在使用master
分支,并且有一个包含“Hello”字符串的文件hello.txt
。
让我们修改文件并添加“世界”字符串。现在,你要移动到不同的分支来解决你刚刚发现了一个小错误,所以你需要stash
更改:
git stash
你移动到另一个分支,修复了这一错误,现在你准备继续在你的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
就像堆的流行 - 一旦它弹出它实际上删除元素,而apply
更像是peek。
作为@ briankip的答案下面的注释,如果存在冲突时弹出存储器,弹出不会删除存储器(并将表现完全像应用) – Kashif 2014-11-20 22:56:25
@John Zwinck最后一行更清晰,谢谢 – Suresh 2015-10-30 07:55:55
感谢您的评论@Kashif – 2016-08-15 03:08:57