git stash应用版本

我有2个分支:Master|Design

在设计工作中,我做了一个藏匿并切换到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

如何应用特定的存储?

661940 次浏览

存储库中的键实际上是左侧的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应用于您的当前位置。

要应用存储并将其从存储列表中删除,请运行:

git stash pop stash@{n}

要应用stash并将其保存在stash缓存中,请运行:

git stash apply stash@{n}

如果在Windows机器和PowerShell中,则需要引用参数,例如:

git stash apply "stash@{0}"

…或应用更改并从存储中删除:

git stash pop "stash@{0}"

否则,如果没有引号,您可能会收到此错误:

致命的:模棱两可的参数'stash@':未知的修订或路径不在 工作树

从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}” 在存储的默认位置,即reflgs在refs/stash中。这个 “git stash”命令学会了接受“git stash应用4”作为 简写为“git stash应用stash@{4}”

git stash应用程序"用于拒绝工作,如果有任何变化 工作树,即使更改不与更改重叠 存储记录

查看您最近的工作以及运行中发生的分支

git stash list

然后选择要应用的存储并仅使用数字:

git stash apply n

其中n(在上述示例中)是与正在进行的工作相对应的数字。

git stash list

列表将显示所有隐藏的项目,例如:stash@{0}:, stash@{1}:,…, stash@{n}:

然后选择表示stash@{n}的数字n:

git stash apply n

例如:

git stash apply 1

将该特定的隐藏更改应用于当前分支

如果你有更多的藏品,我建议你在应用它们之前检查一下。使用:

git stash show -p

详细查看最后一个藏匿点。如果您有更多藏匿点并且想要特定的藏匿点,则在末尾添加多个藏匿点:

git stash show 1

然后,当你找到正确的藏匿应用它通过键入:

git stash apply 1

同样,数字是一个没有数字的例子,您将应用最后一个。

您需要引用字符串,因为您的shell正在将{}的内容作为扩展。因此使用git stash应用'stash@{index}'。或者,您可以使用stash的SHA,或者下次应用它时,您可以自己命名stash。