git stash应用版本

时间:2009-12-15 20:14:33

标签: git git-stash

我有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

如何申请特定存储?

7 个答案:

答案 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