Ohmyzsh: zsh:未找到匹配项:HEAD^

创建于 2011-06-28  ·  16评论  ·  资料来源: ohmyzsh/ohmyzsh

当我运行这个 git 命令时, git reset --soft HEAD^我得到这个zsh: no matches found: HEAD^

我有这些插件plugins=(brew bundler git osx rails3 ruby textmate)

最有用的评论

转义命令中的^

git reset --soft HEAD\^

所有16条评论

转义命令中的^

git reset --soft HEAD\^

甜的。 谢谢你的提示,它做到了。

是的,这是 zshell 中的一个问题。 你也可以使用 HEAD~ 这样你就不必每次都逃避它。

实际上,这个问题是由于 oh-my-zsh 的基本配置中的设置造成的。 普通的旧 ZSH 不会发生这种情况:

$ zsh -f 
ratham% echo HEAD^
HEAD^
ratham% 

所以也许这个问题应该重新打开。

所以在我开始使用 oh-my-zsh 之前很久我就遇到了这个问题。

使用与 OP 完全相同的设置(但没有安装 rvm):

davidd@hal9000 .dotfiles % g co HEAD^
M vim/bundle/vim-rails
M zsh/path.zsh
...

这是添加了简单 rvm 的 zsh:

davidd@hal9000 .dotfiles % zsh -f
hal9000% 源“$HOME/.rvm/scripts/rvm”
hal9000% g co HEAD^
zsh:未找到匹配项:HEAD^

很棒的发现! 也请在 RVM 问题跟踪器上报告此问题。

我又挖了一些,找到了真正的罪魁祸首:

# after loading RVM
$ unsetopt extendedglob
$ echo HEAD^
HEAD^

哦,看起来 ^ 过滤掉了extendedglob 中的符号链接。 好的,我认为这会按预期工作。

man zshall

^x(需要设置 EXTENDED_GLOB。)匹配除模式 x 之外的任何内容。 这具有比/', so更高的优先级 ^foo/bar' 将在.' except ./foo' 中的目录中搜索名为 `bar' 的文件。

对于正在寻找解决方案的人,另一种解决此问题的方法是setopt NO_NOMATCH ,它将错误匹配传递给命令。

很棒的提示! unsetopt nomatch FTW。 :-)

@nickmeharry :heart_eyes:

哦,是的,非常感谢@nickmeharry的提示,

是的,这条线解决了这个问题..谢谢

这不应该是默认行为吗? 我花了一些时间才找到 setopt NO_NOMATCH

甜的! @nickmeharry

此页面是否有帮助?
0 / 5 - 0 等级