【发布时间】:2017-04-13 16:48:37
【问题描述】:
最近我使用的 vagrant image 切换到 zsh 并且我无法使用它从远程获取 git 注释。我试试:
git fetch origin refs/notes/*:refs/notes/*
得到:
zsh: no matches found: refs/notes/*:refs/notes/*
那么正确的命令是什么?
【问题讨论】:
最近我使用的 vagrant image 切换到 zsh 并且我无法使用它从远程获取 git 注释。我试试:
git fetch origin refs/notes/*:refs/notes/*
得到:
zsh: no matches found: refs/notes/*:refs/notes/*
那么正确的命令是什么?
【问题讨论】:
zsh 看到您的命令中的星号,认为它是一个 glob 并尝试扩展它,但是没有与该模式匹配的文件,因此它失败了。如果将参数用单引号括起来,它将不会尝试扩展 glob,并且参数将按预期传递:
git fetch origin 'refs/notes/*:refs/notes/*'
【讨论】:
setopt nonomatch。然而,Zsh 的默认行为更简洁。对于 git,我建议使用 alias git='noglob git',因为它很少需要与 glob 一起使用,并且它可以在您需要的情况下进行自己的 globbing。
假设您的命令有意义(我不确定),refs/notes/:refs/notes/ 中的冒号可能被解释为设备名称的结尾,或者一些奇怪的东西。尝试在该参数周围加上单引号,以阻止 zsh 尝试“理解”它。
git fetch origin 'refs/notes/:refs/notes/'
【讨论】: