在gitscm.org文档中,在git objects章节下,它使用下面的命令,但是尝试它会给我" zsh:找不到匹配项:master ^ {tree}" 。知道什么是不正确的吗?
git cat-file -p master^{tree}
答案 0 :(得分:7)
我发现在指定那些更棘手的git修订版参数时,我必须引用它们
git cat-file -p "master^{tree}"
而忽略"
失败。
此行为及其原因因平台而异:
^
字符用于转义。因此,作为替代方案,您可以编写git cat-file -p master^^{tree}
^
字符用于globbing (感谢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}'
。