git show HEAD ^似乎不起作用。这是正常的吗?

时间:2011-05-23 00:47:23

标签: git bash zsh

我正在使用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

3 个答案:

答案 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)

克拉(^)有special meaning in Bash和Zsh。

你需要逃避它或引用它:

% git show HEAD\^

% git show 'HEAD^^'

答案 2 :(得分:8)

您也可以使用noglob。

% noglob git show HEAD^ 

(或为noglob git制作别名)