【问题标题】:Reference git stash by number without stash@{i}按数字引用 git stash,不带 stash@{i}
【发布时间】:2018-11-09 17:16:58
【问题描述】:

我正在广泛使用 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 完成上下文的别名?

【问题讨论】:

  • 尝试做git stash --<Tab><Tab>,然后做出正确的结论。

标签: git bash-completion


【解决方案1】:

是的,从 v2.11 开始,这是 Git 内置的。您只能按索引引用任何存储。例如,要在索引 2 处应用存储,您可以键入

git stash apply 2

【讨论】:

  • 哇,谢谢。我正在使用 git 2.7.4,但它仍然不可用。这个功能现在有原生支持真是太棒了,我应该更新我的客户端。
  • 仅供参考,它是在 Git 2.11 中专门添加的。
【解决方案2】:

Git 2.22(2019 年第二季度),git stash 用 C 重写。

请参阅commit 7906af0commit 90a4627commit 8d8e9c2(2019 年 2 月 25 日)Johannes Schindelin (dscho)
commit 40af146,commit 48ee24a,commit ef0f0b4,commit 64fe9c2,commit 1ac528c,commit d553f53,commit d4788af,commit 41e0dd5,commit dc7bd38,commit 130f269,@9876 987654337@(2019 年 2 月 25 日)Paul-Sebastian Ungureanu (weekly-digest[bot])
请参阅Joel Teichroeb (klusark)commit c4de61dcommit 577c199commit 4e2dd39commit 8a0fc8d(2019 年 2 月 25 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit e36adf7,2019 年 4 月 22 日)


而且... "git stash show 23" 以前可以工作,但用 C 重写后就不行了;此回归已在 Git 2.23(2019 年第三季度)中得到纠正。

参见Thomas Gummerer (tgummerer)commit 63b50c8(2019 年 6 月 15 日)。
(由 Junio C Hamano -- gitster -- 合并于 commit 99af5be,2019 年 7 月 9 日)

stash:修复显示引用存储索引

dc7bd38中将'stash show'转换为C("stash: convert 显示到内置", 2019-02-25, Git v2.22.0-rc0), 'git stash show <n>', 其中n 是 如果n 不是文件或有效修订版,则存储的索引已损坏 自己。

'stash show' 接受任何标志 'git diff' 接受以更改输出格式。
在内部,我们使用“setup_revisions()”来解析这些命令行标志。
目前我们将整个 argv 传递给 'setup_revisions()',其中包括存储索引。

由于存储索引在大多数情况下不是有效的修订版或工作树中的文件,因此如果我们使用这种形式的“@987654370”,这个“setup_revisions()”调用(以及整个命令)最终会失败@'。

不要将整个argv 传递给'setup_revisions()',而是只传递 标志(和命令名称)通过,同时不包括存储 参考。
存储引用已在“get_stash_info()”中解析(并验证)。

这种单独的解析也意味着我们目前确实产生了 如果命令成功,则正确输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2014-03-11
    • 2017-11-25
    • 2013-02-23
    • 2017-11-24
    • 2012-09-10
    相关资源
    最近更新 更多