122

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

所以我跑git stash了两次,我准备好回去编辑我的文件了。我跑了git stash apply,但我不相信我隐藏的所有文件都没有隐藏。有什么我可以做的吗?有什么办法检查吗?

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

反正有没有显示所有git stashes

4

3 回答 3

211

您可以通过以下方式获取所有存储的列表

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}
于 2013-08-05T17:03:39.720 回答
8

我遇到了这种情况,我做了两次 stash 并且 git stash pop 刚刚取消了最后一个 stash。所以我做了

git stash list

git stash pop stash@{1}

这取消了我的第一个存储,我可以看到我所有的更改!

于 2020-04-20T04:48:55.047 回答
3

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

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

将 stash 与本地树进行比较

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

git stash show -p

如果你有一个特定的目标,只需使用它的git stash 名称或 stash 列表中的 id:

git stash show -p stash@{3}

也许使用差异?

如果你真的对提升你的 git 技能感兴趣,你总是可以寻求差异。要查看 stash 中的内容和在 master 分支上检查到 HEAD 中的内容之间的区别,可以使用以下差异:

git diff stash@ master

另一个简洁的命令可以显示对存储历史中可能派上用场的元素的更改是 --stat:

git stash list --stat

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

git stash show -p stash@{3}
于 2020-06-11T21:06:44.620 回答