是否有指定git <stash>
的快捷方式格式?例如stash@{3}
像:
git apply @3
而不是:
git apply stash@{3}
我在man文件中没有看到任何内容:
当没有&lt; stash&gt;给出了stash @ {0},否则&lt; stash&gt; 必须是表格的参考 藏匿@ {&LT;修改&GT;}
答案 0 :(得分:2)
实际上,手册页有一点:你可以给任何“足够藏匿”的说明符。根据定义,实际隐藏引用(如stash
和stash@{3}
)总是“隐藏”。但是,$REV
所在的任何对象名称都可以:
$REV^2
存在$REV
,$REV^1
,$REV:
,$REV^1:
和$REV^2:
均可解析被认为是藏匿处。冒号后缀将提交ID转换为树ID(确保它存在),并且:
$REV
解析到$REV
$REV^1
$REV:
$REV^1:
$REV^2:
如果$REV^3
存在,则是未跟踪/忽略的文件提交,其树为$REV^3:
。
这意味着git stash
会认为任何“真正的”合并提交都是存储。 (但将它们用作藏匿处充其量是奇怪的。:-))
如果您希望稍后可以通过短名称命名已保存的存储,则可以为其指定其他名称,例如标记名称:
git tag foo stash@{3}
请注意,这会复制stash@{3}
的值,而不是名称:如果您下次推送另一个存储,则提交(现在由标记引用)将与stash@{4}
匹配。您可以使用git rev-parse
:
git rev-parse foo; git rev-parse stash@{3}
在你藏匿新东西之前,将两次打印相同的巨型SHA-1值,然后:
git rev-parse foo; git rev-parse stash@{4}
在你藏匿别的东西之后,会做同样的事情,在“藏匿堆栈”上推送另一个藏匿处。
您可以使用refs/
在分支和标记空间之外创建名称(甚至完全在git update-ref
之外),并且它们有效:
git update-ref refs/jinkies/scooby stash
git stash show jinkies/scooby
但我不建议“手动”这样做,这太容易搞砸了。使用标签(并命名它们以便你能够记住它们的用途,如果你在编码狂热之后数周或数月遇到剩余的藏匿标签)可能更为明智。
答案 1 :(得分:0)
实际上stash@{n}
是提交对象的快捷方式。在我的回购中,我这样做了:
git show stash@{1}
amd我得到了这个:
commit 24774ab81ad6c8f0b071363f62bf438572a2b286
Merge: 1c47ddf 31ae746
Author: Roberto Bonvallet <roberto@...>
Date: Fri Oct 18 13:15:44 2013 -0300
因此,在这种情况下,stash@{0}
是24774ab81ad6c8f0b071363f62bf438572a2b286
的快捷方式。