我正在尝试使用带有虚拟仓库的git管道命令创建提交历史记录。我可以使用包含blob的单个未命名树对象创建提交,但我无法弄清楚如何使这个未命名的树对象包含其他树对象。
我尝试使用git read-tree --prefix=tree_name tree_sha
它告诉我:fatal: This operation must be run in a work tree
我尝试使用git mktree
(就像this page上显示的那样)
像这样:cat ../info.txt | git mktree
info.txt是一个包含1行的文件:
040000 tree aa8c07e1371022a183b011d5d41517ef54780a17 test_tree
它告诉我:
fatal: input format error: 040000 tree aa8c07e1371022a183b011d5d41517ef54780a17 tree_name
有人能告诉我一种创建和命名树的方法吗?
答案 0 :(得分:1)
在hash和test_tree之间需要四个空格而不是一个空格。如果仍然无效,请尝试选项卡。
040000 tree aa8c07e1371022a183b011d5d41517ef54780a17 test_tree
答案 1 :(得分:0)
我假设您的仓库中已存在哈希aa8c07e1371022a183b011d5d41517ef54780a17
的树?如果没有,git mktree
将失败。另外,您在info.txt
中有一个尾随换行符吗?我阅读文档表明这也是必需的。
我已成功使用git mktree
,如下所示:
$ cat tree.txt
040000 tree 4d5fcadc293a348e88f777dc0920f11e7d71441c foo
$ git mktree < tree.txt
0a7f38a609340d0b8eede2f6debf8bad4191738f
前两个空格是空格,第三个是制表符,并带有尾随换行符。如果有疑问,请运行git ls-tree
并检查其输出,可能使用xxd
。