git存储应用版本

我真的希望有人能build议。

我有2个分支master | devise

在devise工作,我做了一个藏匿,切换到主,做了一些调整。 切换回devise,并做了一个藏匿只适用于失去在devise分支的所有我的变化。

我希望我所有的工作都处于隐藏状态,因为我没有清理或删除这些工作。

如果我做一个存储列表,我会得到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 

我怎样才能申请一个特定的藏匿处?

希望有人能帮助!

进入隐藏的键实际上是左边的stash@{n}项。 所以试试git stash apply stash@{0}等等(注意在某些shell中你需要引用"stash@{0}" ,比如zsh和fish)。

事实上,存储@ {0}是git中的一个修订,您可以切换到…但是git stash apply ...应该弄清楚如何将DTRT应用到您当前的位置。

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

 git stash pop stash@{n} 

要应用存储并将其保存在存储caching中,请运行:

 git stash apply stash@{n} 

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

 git stash apply "stash@{0}" 

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

 git stash pop "stash@{0}" 

否则没有引号,你可能会得到这个错误:

致命的:模棱两可的论点“隐藏@”:未知的版本或path不在工作树中。

从版本2.11开始,这非常容易,您可以使用N栈号而不是说"stash@{n}" 。 所以现在,而不是使用:

 git stash apply "stash@{n}" 

你可以input:

 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}你可以input:

 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发行说明:

  • 发行说明2.11

用户在命名默认位置的单个元素时总是必须说“stash @ {$ N}”,即在refs / stash中引用reflog。 “git stash”命令学会接受“git stash apply 4”作为“git stash apply stash @ {4}”的缩写

  • 发行说明1.7.5.1

git stash apply“用来拒绝工作,如果工作树有任何改变,即使改变没有与改变时重叠的存储logging