我注意到在 git 版本1.8.3.1
(由 CentOS 7 提供)中,这个命令似乎不起作用:
git cat-file -t -- "5378198ea7a83f5fa9bb3ba17f51be3a6ffbecc1:README.md"
(显然指定正确的 git 哈希值和该修订版的现有文件)
这是标准错误:
usage: git cat-file (-t|-s|-e|-p|<type>|--textconv) <object>
or: git cat-file (--batch|--batch-check) < <list_of_objects>
<type> can be one of: blob, tree, commit, tag
-t show object type
-s show object size
-e exit with zero when there's no error
-p pretty-print object's content
--textconv for blob objects, run textconv on object's content
--batch show info and content of objects fed from the standard input
--batch-check show info about objects fed from the standard input
对我来说,问题似乎在于“ --
”转义参数被解释为类型而不是连续参数的转义。事实上,这对我有用:
git cat-file -t "5378198ea7a83f5fa9bb3ba17f51be3a6ffbecc1:README.md"
它存在并0
具有以下结果:
blob
所以,简而言之。
问题
您建议如何继续发现“ --
”参数何时在 git 中引入?
相关文件:
答案1
git cat-file
过去对它的参数数量有严格的检查,这意味着它--
不能被使用。检查发生在解析选项之前,这就是为什么您会立即获得使用输出,而不会表明参数无效的原因。
这是2015 年 5 月删除;包含此更改的第一个版本是 2.5.0。
为了弄清楚这一点,我比较了cat-file.c
从版本 1.8.3.1 到当前状态;我注意到对参数版本的检查,然后查找删除它的提交。