git stash应用版本

Lee*_*Lee 448 git git-stash

我真的希望有人可以提供建议.

我有2个分支主| 设计

在设计工作中我做了一个藏匿并切换到主人,做了一些调整.切换回设计并执行存储仅适用于丢失设计分支中的所有更改.

我希望我的所有工作都在藏匿之内,因为我没有清除或删除这些.

如果我做一个藏匿列表,我得到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
Run Code Online (Sandbox Code Playgroud)

如果我尝试stash apply我收到错误:

fatal: Needed a single revision
f2c0c72: no valid stashed state found
Run Code Online (Sandbox Code Playgroud)

我该如何申请特定藏匿?

希望有人可以帮忙!

ara*_*nid 719

进入藏匿处的钥匙实际上stash@{n}是左侧的物品.所以尝试:

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

(注意,在某些shell中你需要引用"stash@{0}",比如zsh,fish和powershell).

要获取藏匿列表:

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

实际上stash @ {0}是git中的一个修订版,你可以切换到......但是stash@{n}应该弄清楚如何将DTRT应用到你当前的位置.

  • 请注意,在某些shell上,必须引用存储@ {n}. (88认同)
  • zsh用户需要双引号,例如`git stash apply"stash @ {0}"` (11认同)
  • 另一个提示:您可以执行例如`gitk stash @ {0}`来显示您在特定存储中所做的更改. (7认同)
  • `stash @ {n}`是键入的最尴尬的命令.除了创建自己的别名或函数之外,还有其他快捷方式吗? (6认同)
  • `git stash apply n` 很平静 (5认同)
  • [Google 员工应该看看 Pau 的回答](/sf/answers/3111579341/) (2认同)

Dan*_*erz 231

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

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

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

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

  • 对于PowerShell:`git stash pop"stash @ {n}"` (40认同)
  • 这很好,感谢您区分这两个选项.我只是尝试了这一点,看起来如果你从branch-a弹出存储到branch-b,存储仍将保留在存储缓存中.我想那样你仍然可以选择在未来的某个日期使用pop /应用存储来分支-a.真的希望有道理.便利! (8认同)

Pau*_*Pau 46

从版本2.11开始,它非常简单,您可以使用N堆栈编号而不是说"stash@{n}".所以现在而不是使用:

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

你可以输入:

git stash apply n
Run Code Online (Sandbox Code Playgroud)

例如,在您的列表中:

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
Run Code Online (Sandbox Code Playgroud)

如果你想申请,stash@{1}你可以输入:

git stash apply 1
Run Code Online (Sandbox Code Playgroud)

否则,即使您在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.
Run Code Online (Sandbox Code Playgroud)

在1.7.5.1之前的版本中,如果工作目录发生更改,则拒绝工作.


Git发行说明:

当在存储的默认位置命名单个元素时,用户总是必须说"存储@ {$ N}",即refs/stash中的reflogs."git stash"命令学会接受"git stash apply 4"作为"git stash apply stash @ {4}"的简写

git stash apply"用于在工作树中有任何变化时拒绝工作,即使更改与存储记录的更改不重叠


jte*_*rry 40

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

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

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

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

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

致命的:模糊的论点'stash @':未知的修订或路径不在工作树中.


小智 30

git stash list 
Run Code Online (Sandbox Code Playgroud)

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

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

git stash apply n 
Run Code Online (Sandbox Code Playgroud)

例如:

git stash apply 1 
Run Code Online (Sandbox Code Playgroud)

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


Jan*_*ndr 26

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

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

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

git stash show 1
Run Code Online (Sandbox Code Playgroud)

然后,当您找到正确的存储时,通过键入以下内容应用它:

git stash apply 1
Run Code Online (Sandbox Code Playgroud)

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


小智 10

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

git stash list
Run Code Online (Sandbox Code Playgroud)

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

git stash apply n
Run Code Online (Sandbox Code Playgroud)

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