我正在广泛使用git stashes。有时,当乍一看简单的stash@{3}
足够时,输入3
会变得很烦人。是否有可能以某种方式使用较短的参考?
我知道有shell别名的解决方案。制作像
这样的别名sshow = "!f { git stash show @{$@}; }; f"
允许使用git sshow 1
。如果正确扩展git stash show
,它甚至允许将其他参数传递给$@
。
但是,在这种情况下,git自动完成功能不起作用:当键入git stash show stash@{0} --<Tab><Tab>
时,它应显示所有git diff
个选项,但此处它对底层命令一无所知。
是否有其他方法可以制作此类别名以保留原始git diff
完成情境?
答案 0 :(得分:3)
是的,从v2.11开始,这是内置于Git的。您只能通过索引引用任何存储。例如,要在索引2处应用存储,您可以键入
git stash apply 2
答案 1 :(得分:0)
Git 2.22(2019年第二季度),git stash
用C重写。
请参见commit 7906af0的commit 90a4627,commit 8d8e9c2,Johannes Schindelin (dscho
)(2019年2月25日)。
参见commit 40af146,commit 48ee24a,commit ef0f0b4,commit 64fe9c2,commit 1ac528c,commit d553f53,commit d4788af,commit 41e0dd5,{ {3}},commit dc7bd38,commit 130f269,commit bef55dc,commit dac566c(2019年2月25日)由commit ab8ad46撰写。
请参见Paul-Sebastian Ungureanu (weekly-digest[bot]
)的commit c4de61d,commit 577c199,commit 4e2dd39,commit 8a0fc8d(2019年2月25日)。
(由Joel Teichroeb (klusark
)在Junio C Hamano -- gitster
--中合并,2019年4月22日)
然后...“ git stash show 23
” 可以正常工作,但是在用C重写后不再有用;此回归已在Git 2.23(2019年第三季度)中得到纠正。
请参见commit e36adf7的commit 63b50c8(2019年6月15日)。
(由Thomas Gummerer (tgummerer
)在Junio C Hamano -- gitster
--中合并,2019年7月9日)
隐藏:修复显示引用隐藏索引的问题
在commit 99af5be中将“
stash show
”转换为C(“stash
:转换 显示为内置”,2019年2月25日,Git v2.22.0-rc0),“git stash show <n>
”,其中n
是 如果n
不是文件或有效的修订版,则存储的索引已损坏 本身。'
stash show
'接受任何标志'git diff
'来更改输出格式。
在内部,我们使用'setup_revisions()
'来解析这些命令行标志。
当前,我们将整个argv
传递到'setup_revisions()
',其中包括隐藏索引。但是,由于在大多数情况下,存储索引不是有效的修订版或工作树中的文件,因此,如果我们使用以下形式的“”,则此“
setup_revisions()
”调用(以及整个命令)将以失败告终git stash show
'。仅将整个
argv
传递给'setup_revisions()
',而不是传递 标记(和命令名称)通过,但不包含隐藏项 参考。
隐藏参考已在“get_stash_info()
”中解析(并验证)。此单独的解析也意味着我们当前确实在生成 如果命令成功,则输出正确。