当我运行这个 git 命令时, git reset --soft HEAD^
我得到这个zsh: no matches found: HEAD^
我有这些插件plugins=(brew bundler git osx rails3 ruby textmate)
转义命令中的^
:
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
最有用的评论
转义命令中的
^
: