在gitscm.org文档中,在git objects章节下,它使用下面的命令,但尝试它会给我“zsh:找不到匹配项:master^{tree}”。知道什么是不正确的吗?
git cat-file -p master^{tree}
在gitscm.org文档中,在git objects章节下,它使用下面的命令,但尝试它会给我“zsh:找不到匹配项:master^{tree}”。知道什么是不正确的吗?
git cat-file -p master^{tree}
我发现在指定那些更棘手的 git 修订参数时,我必须引用它们
git cat-file -p "master^{tree}"
同时忽略"
失败。
这种行为及其原因因平台而异:
^
字符用于转义。因此,作为替代方案,您可以编写git cat-file -p master^^{tree}
^
字符用于通配符(感谢 Wumpus Q. Wumbley 和 kostix 的解释)
noglob whatever
如果您想在whatever
没有 globbing的情况下运行,则可以运行。例如,我将它定义为 的别名rake
。
此错误的各种可能情况:
根据您使用的 shell,您在使用 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 指出的那样:“如果你得到“不是一个有效的对象名 master^{tree}”,请确保你至少完成了一次提交。在 git init 之后,master 分支还不存在。-villasv “因为master^{tree} 语法指定了主分支上最后一次提交所指向的树对象,作为对git 对象的引用
在提交到当前更改后,git cat-file -p 'master^{tree}'
可以执行。
在 Windows 中执行该步骤之前需要克隆项目。