2

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

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

4 回答 4

6

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

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

同时忽略"失败。

这种行为及其原因因平台而异:

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

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

于 2013-06-15T09:05:10.597 回答
2

noglob whatever如果您想在whatever没有 globbing的情况下运行,则可以运行。例如,我将它定义为 的别名rake

于 2013-06-16T15:31:53.887 回答
0

此错误的各种可能情况:

根据您使用的 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}'可以执行。

于 2020-12-01T09:57:49.857 回答
0

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

于 2015-10-21T08:57:38.027 回答