git cat-file -p master ^ {tree}在zsh中输出错误

时间:2013-06-15 09:03:07

标签: git zsh

gitscm.org文档中,在git objects章节下,它使用下面的命令,但是尝试它会给我" zsh:找不到匹配项:master ^ {tree}" 。知道什么是不正确的吗?

git cat-file -p master^{tree}

4 个答案:

答案 0 :(得分:7)

我发现在指定那些更棘手的git修订版参数时,我必须引用它们

git cat-file -p "master^{tree}"

而忽略"失败。

此行为及其原因因平台而异:

  • 在Windows上,在PowerShell和cmd.exe中,^字符用于转义。因此,作为替代方案,您可以编写git cat-file -p master^^{tree}
  • 在zsh中,^字符用于globbing
  • 在bash中,命令不带引号

(感谢Wumpus Q. Wumbley和kostix的解释)

答案 1 :(得分:2)

如果您想在不使用通配符的情况下运行noglob whatever,则可以运行whatever。我将它定义为rake的别名,例如。

答案 2 :(得分:0)

需要在Windows中执行该步骤之前克隆项目。

答案 3 :(得分:0)

此错误的各种可能情况:

根据您使用的外壳,使用master ^ {tree}语法时可能会遇到错误。

在Windows上的CMD中,^字符用于转义,因此必须加倍以避免这种情况:git cat-file -p master ^^ {tree}。使用PowerShell时,必须使用引号{}来引用参数,以避免参数解析错误:git cat-file -p'master ^ {tree}'。

如果您使用的是ZSH,则使用^字符进行遍历,因此必须将整个表达式括在引号中:git cat-file -p“ master ^ {tree}”。

正如villasv指出的那样: ” 如果确实收到“不是有效的对象名称主控^ {tree}”,请确保至少已完成一次提交。 git init之后,master分支还不存在。 – villasv ” 由于master ^ {tree}语法指定了对git object引用的master分支上的最后一次提交所指向的树对象 提交当前更改后,可以执行git cat-file -p 'master^{tree}'