【发布时间】:2020-12-25 19:08:13
【问题描述】:
我已将 git 更新到其最新版本 (2.29.0) 并使用 ZSH 5.8。
我以前用git checkout remote_br<tab>在分支之间切换,以便在分支之间快速切换,即使分支只是一个远程的atm。我已经看到 git 对 switch/checkout recently 进行了很多更改,问题是我在远程分支上的自动完成功能不再起作用(使用 checkout 或 switch)。
我尝试将最新版本的 contrib/completion/git-completion.zsh 添加到我的 zsh 中,但我的问题仍然存在。我在这里错过了什么吗?
【问题讨论】:
-
如您所见,完成脚本上出现了一系列小活动,以解决
switch命令等问题。我记得有一两个改变使 DWIM 完成也成为可选的。听起来它在您的手机中已关闭。我实际上并没有使用此功能,我不记得启用/禁用设置是什么。 -
请注意,当您运行
git fetch并选择一个新的远程跟踪名称(例如origin/xyz-feature)时,您实际上根本没有(本地)分支名称xyz-feature. switch 或 checkout 命令将根据需要从origin/xyz-feature创建您的xyz-feature,Git 将此称为“checkout DWIM”(按我的意思做)。 -
之所以选择此选项是因为某些存储库有数百个名称相似的分支,因此如果您做使用完成,并且有一个名为
sanity的本地分支例如,但是您的上游有 78 个名称都以s开头的分支,您不能只输入s<tab>。关闭 DWIM 样式的完成,您可以只需键入s<tab>。但在您的情况下,您希望它打开 on。无论如何,这可能是查看完成脚本的有用提示。 -
我已经阅读了所有最近的更改日志,但我什么也没看到。在查看提交时,我认为它可能与以下内容有关:github.com/git/git/commit/… 但我没有看到问题。我检查了
__git_checkout_default_dwim_mode,它按预期返回--dwim。 -
从 git 版本 2.30.0(2020 年 12 月 27 日发布)开始,这似乎已得到修复。我已经更新,它在 zsh 中对我来说可以正常工作。
标签: git zsh oh-my-zsh zsh-completion