【问题标题】:Trying to autocomplete `git stash drop` produces error output尝试自动完成“git stash drop”会产生错误输出
【发布时间】:2020-08-31 00:06:22
【问题描述】:

每当我在输入git stash drop 后按 Tab 时,我都会收到以下错误消息(连续输出三次):

_arguments:comparguments:325: invalid argument: _git-notes
_git-stash:88: command not found: (-q --quiet)-q[suppress all output]

实际的存储删除仍然确实有效,但在选择之前必须先列出我的存储很麻烦。

我尝试卸载并重新安装 git,但无济于事。

如果有帮助,我最近从 19.10 升级到 Ubuntu 20.04,我不记得以前的操作系统版本中出现过这个错误。

【问题讨论】:

  • 看起来你的 Git 的自动完成脚本、你的 Git 本身和/或你的 bash 版本不匹配。安装新的 Git 并不总是更新自动完成脚本。 This 适用于 OSX,而​​不是 Ubuntu,但值得一看。
  • 您找到解决方案了吗?我也面临同样的问题。
  • @SergioLeone 我在 google 上搜索了 git autocompletion,发现 this tutorial 为我使用的 shell 添加了自动完成功能。虽然它确实修复了错误,但每当我在git stash drop stash@{ 之后按 Tab 时,它只会添加另一个花括号,结果为git stash drop stash@{{
  • 是的,issue 已关闭,因为它不是 ohmyzsh 的问题。
  • 好像已经被zsh-5.8-44-g754658aff修复了(根据zsh.org/mla/workers/2020/msg00915.html

标签: git ubuntu


【解决方案1】:

我在这里找到了一个临时解决方案(直到 Ubuntu 获得带有此修复程序的更高版本的 zsh):

https://github.com/ohmyzsh/ohmyzsh/issues/9264

这个 github 问题引用了修复它的 zsh 提交:https://github.com/zsh-users/zsh/commit/754658aff38e1bdf487c58bec6174cbecd019d11

所以 - 取自这些地方,您可以这样做来修复它:

  1. 运行这个找到你需要编辑的文件:ls -l ${^fpath}/_git(N)
  2. 编辑文件,对我来说是:vim /usr/share/zsh/functions/Completion/Unix/_git
    • 在线1812
      • _arguments -S $endopt \_git-notes 更改为_arguments -S $endopt \
  3. 关闭并重新打开您的 zsh 终端。

gstd 命令现在应该可以正常工作而不会收到错误。几个月前我这样做了,从那以后一直很好。不得不在另一台机器上做这就是为什么我最终再次寻找这个解决方案。以为我会在这里发帖以帮助自己(和其他所有人)的未来!

【讨论】:

  • 在 macOS 上,您必须先将 /usr/share/zsh/5.8/functions/_git 复制到 /usr/local/share/zsh/site-functions,然后才能将其更改为 /usr/share 受保护。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 2017-11-25
  • 1970-01-01
  • 2012-04-17
  • 2020-04-01
  • 2021-12-23
  • 1970-01-01
  • 2018-02-09
相关资源
最近更新 更多