Git藏匿两次


93

我不得不快速切换git分支,所以我运行了git stash,但由于我的文件之一需要编辑,因此不得不再次运行它。

因此,我已经运行了git stash两次,现在可以返回编辑文件了。我跑了,git stash apply但我不相信我保存的所有文件都没有保存。有什么我可以做的吗?有什么办法检查吗?

运行时git stash show,我只看到我的两个git存储区中的最后一个。

反正有全部显示git stashes吗?


4
git stash list。如果您藏有两个藏匿处,请致电git stash pop两次。
Felix Kling 2013年

嗨,您已解决问题!您应该将其作为答案。非常感谢
stephenmurdoch 2013年

Answers:


169

你可以得到所有藏匿处的清单

git stash list

这将向您显示类似

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B

如果您藏了两次,则只需拨打git stash pop两次即可。与相对git stash applypop应用并删除最新的存储。

您还可以引用特定的存储,例如

git stash show stash@{1}

要么

git stash apply stash@{1}

非常感谢。拯救了我的一天。
stephenmurdoch

25
如果您想git stash pop两次,因为您希望两个存储都在同一提交中,但是您在2nd上遇到“错误:对以下文件的本地更改将被merge:覆盖:” git stash pop,您可以:1)git stash pop,2)git add .和3 )git stash pop
gabe 2015年

这对我有帮助。我需要先执行“ git stash”,然后执行“ git stash --all”以存储一些新的未跟踪文件。两次执行git stash pop无效。我只得到了以后的藏匿处。
Leopold Kristjansson

0

我遇到了这种情况,我做了两个隐藏,而 git stash pop 只是未隐藏的最后一个隐藏。所以我做了

git stash list

git stash pop stash@{1}

这掩盖了我的第一个藏身之处,我可以看到我所有的更改!


0

您在帖子中问了几个不同的问题,其他受访者对其中一些给出了很好的答案。似乎最重要但尚未得到回答的一个是:

>>我不相信我保存的所有文件都没有保存。有什么我可以做的吗?有什么办法检查吗?

比较存储与本地树

我认为您想要做的是将存储与本地工作树进行比较。您可以将-p开关放在stash命令上,这样很好:

git stash show -p

如果有一个特定的对象,只需使用其git stash名称或隐藏列表中的id:

git stash show -p stash@{3}

也许使用差异?

如果您真的有兴趣提高自己的git技能,可以随时进行比较。要查看存储区中的内容与检入master分支中的HEAD之间的差异,可以使用以下差异:

git diff stash@ master

另一个简洁的命令可以显示您对存储历史中可能有用的元素的更改,即--stat:

git stash list --stat

但是我认为简单的答案是正确的答案。只需使用-p开关,您很可能会看到您搁置存储区是否已弹出。

 git stash show -p stash@{3}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.