Git藏了两次

ste*_*och 74 git git-stash

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

所以我跑了git stash两次,我准备回去编辑我的文件了.我跑了,git stash apply但我不相信我藏起来的所有文件都是不受约束的.有什么我能做的吗?有什么办法检查?

当我跑步时git stash show,我只看到我的两个git stashes中的最后一个.

反正有没有显示所有git stashes

Fel*_*ing 135

您可以获得所有藏匿的列表

git stash list
Run Code Online (Sandbox Code Playgroud)

这将显示你的东西

stash@{0}: WIP on dev: 1f6f8bb Commit message A
stash@{1}: WIP on master: 50cf63b Commit message B
Run Code Online (Sandbox Code Playgroud)

如果你做了两个藏匿处,那就打git stash pop两次电话.相反git stash apply,pop应用和删除最新的藏匿.

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

git stash show stash@{1}
Run Code Online (Sandbox Code Playgroud)

要么

git stash apply stash@{1}
Run Code Online (Sandbox Code Playgroud)

  • 如果你想要两次`git stash pop`,因为你想在同一次提交中同时存在两个存储但是你遇到"错误:你的第二个`git stash pop`会在你的第二个`git stash pop`上覆盖你对以下文件的本地更改:"可以:1)`git stash pop`,2)`git add .`,和3)`git stash pop`. (18认同)

Waa*_*eda 14

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

git stash list

git stash pop stash@{1}
Run Code Online (Sandbox Code Playgroud)

这解锁了我的第一个隐藏项,我可以看到我所有的更改!


Cam*_*zie 6

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

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

将存储与本地树进行比较

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

git stash show -p
Run Code Online (Sandbox Code Playgroud)

如果您需要某个特定的文件,只需使用其git stash 名称或 stash 列表中的 id 即可:

git stash show -p stash@{3}
Run Code Online (Sandbox Code Playgroud)

也许使用差异?

如果你真的有兴趣提升你的 git 技能,你可以随时进行 diff。要查看存储中的内容与 master 分支上 HEAD 中签入的内容之间的差异,可以使用以下 diff:

git diff stash@ master
Run Code Online (Sandbox Code Playgroud)

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

git stash list --stat
Run Code Online (Sandbox Code Playgroud)

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

git stash show -p stash@{3}
Run Code Online (Sandbox Code Playgroud)