我有2个分支:master |设计
在设计工作中我做了一个藏匿并切换到主人,做了一些调整。切换回设计并执行stash apply
只会丢失设计分支中的所有更改。
我希望我的所有作品都藏在一个藏匿处,因为我没有清除或删除它们。
如果我使用存储列表,我会得到4个结果:
stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust
如果我尝试git stash apply f2c0c72
我收到错误:
fatal: Needed a single revision
f2c0c72: no valid stashed state found
如何申请特定存储?
答案 0 :(得分:610)
存储区中的密钥实际上是左侧的stash@{n}
项。所以试试:
git stash apply stash@{0}
(请注意,在某些shell中,您需要引用"stash@{0}"
,例如zsh,fish和powershell)。
从版本2.11开始,它非常简单,您可以使用N堆栈编号而不是stash@{n}
。所以现在而不是使用:
git stash apply "stash@{n}"
您可以输入:
git stash apply n
获取藏匿列表:
git stash list
实际上stash@{0}
是git中的一个修订版,您可以切换到...但git stash apply ...
应该弄清楚如何将DTRT应用到您当前的位置。
答案 1 :(得分:220)
要应用存储并将其从存储列表中删除,请运行:
git stash pop stash@{n}
要应用存储并将其保存在存储缓存中,请运行:
git stash apply stash@{n}
答案 2 :(得分:42)
从版本2.11开始,它非常简单,您可以使用N堆栈编号而不是"stash@{n}"
。
所以现在而不是使用:
git stash apply "stash@{n}"
您可以输入:
git stash apply n
例如,在您的列表中:
stash@{0}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{1}: WIP on design: f2c0c72... Adjust Password Recover Email
stash@{2}: WIP on design: eb65635... Email Adjust
stash@{3}: WIP on design: eb65635... Email Adjust
如果您想申请stash@{1}
,可以输入:
git stash apply 1
否则,即使您在1.7.5.1之后对目录进行了一些更改,也可以使用它,但是您必须确保存储不会覆盖您的工作目录更改,否则会出现错误:
error: Your local changes to the following files would be overwritten by merge:
file
Please commit your changes or stash them before you merge.
在1.7.5.1之前的版本中,如果工作目录发生了变化,则拒绝工作。
Git发行说明:
在命名单个元素时,用户总是必须说“stash @ {$ N}” 在存储的默认位置,即refs / stash中的reflogs。该 “git stash”命令学会了接受“git stash apply 4”作为 “git stash apply stash @ {4}”的简称
git stash apply“用于拒绝工作,如果有任何变化 工作树,即使改变没有与改变重叠了 藏匿记录
答案 3 :(得分:40)
如果一个人在Windows机器和PowerShell中,则需要引用诸如以下的参数:
git stash apply "stash@{0}"
...或者应用更改并从藏匿处删除:
git stash pop "stash@{0}"
否则,如果没有引号,您可能会收到此错误:
致命:含糊不清的争论'stash @':未知版本或路径不在 工作树。
答案 4 :(得分:2)
git stash apply n
然后选择要应用的存储区
git stash apply 1
答案 5 :(得分:1)
对于初学者来说,这很容易理解。
使用以下命令检查您的git stash列表:
git stash list
然后使用以下命令应用:
git stash apply stash@{n}
例如:我正在应用我的最新存储(最新始终是存储列表顶部的索引{0})。
git stash apply stash@{0}
答案 6 :(得分:0)
Git Stash list
列表将显示所有存放的物品,例如:stash @ {0} :, stash @ {1}:,..,stash @ {n}:
然后选择代表stash @ {n}的数字n:
git stash apply n
for eg: git stash apply 1 will apply that particular stashed changes to the current branch