2

我正在尝试使用带有裸仓库的 git 管道命令创建提交历史记录。我可以使用包含 blob 的单个未命名树对象创建提交,但我无法弄清楚如何让这个未命名树对象包含其他树对象。

我尝试使用git read-tree --prefix=tree_name tree_sha 它告诉我:fatal: This operation must be run in a work tree

我尝试git mktree像这样使用(如本页所示):cat ../info.txt | git mktree

info.txt 是一个包含 1 行的文件:

040000 tree aa8c07e1371022a183b011d5d41517ef54780a17    test_tree

它告诉我:

fatal: input format error: 040000 tree aa8c07e1371022a183b011d5d41517ef54780a17    tree_name

谁能告诉我一种创建和命名树的方法?

4

2 回答 2

1

在 hash 和 test_tree 之间需要四个空格而不是一个空格。如果它仍然不起作用,请尝试使用选项卡。

040000 tree aa8c07e1371022a183b011d5d41517ef54780a17    test_tree
于 2015-01-11T12:02:20.167 回答
0

aa8c07e1371022a183b011d5d41517ef54780a17我假设您的存储库中已经存在带有哈希的树?如果没有,git mktree将失败。另外,你有一个尾随换行符info.txt吗?我对文档的阅读表明这也是必需的。

我已经成功地使用git mktree了这样的:

$ cat tree.txt
040000 tree 4d5fcadc293a348e88f777dc0920f11e7d71441c    foo

$ git mktree < tree.txt
0a7f38a609340d0b8eede2f6debf8bad4191738f

其中前两个空格是空格,第三个是制表符,并带有尾随换行符。如果有疑问,运行git ls-tree并检查其输出,可能使用xxd.

于 2015-01-13T17:20:42.193 回答