我正在使用Zsh并尝试为项目运行git show以查看我的修订历史记录。如果我做
git show HEAD
它可以正常显示我上次提交,但以下命令不起作用
[master↑5⚡]:~/project $ git show HEAD^
zsh: no matches found: HEAD^
[master↑5⚡]:~/project $ git show HEAD^^
zsh: no matches found: HEAD^^
然而这确实有效
git HEAD~1
我在git show HEAD^^
做错了吗?
git version 1.7.4.5
答案 0 :(得分:36)
当它无法匹配glob模式时,你可以告诉zsh
停止对命令的厌恶,而不是转义或引用插入符号。将此选项放在.zshrc
:
setopt NO_NOMATCH
如果glob-matching失败,该选项会阻止zsh
中止命令。 git show HEAD^
将正常工作,您无需逃脱插入符号。此外,globbing和^
event designator仍然可以按预期的方式工作。
要在评论中回答dolzenko的问题,你可以通过禁用扩展的globbing来获得git log ^production master
(巧合的是,也就是git的'双点'语法所做的:git log production..master
):
setopt NO_EXTENDED_GLOB
当然,你可能实际上依赖于扩展的globbing并且不知道它。我建议在禁用之前阅读what it does。
答案 1 :(得分:30)
答案 2 :(得分:8)
您也可以使用noglob。
% noglob git show HEAD^
(或为noglob git
制作别名)