我构建了一个包含几个文件的树,并且只存在于对象数据库中。然后我将它添加到与路径关联的索引中,并提交:
git hash-object -w --stdin
...
abcd1
git hash-object -w --stdin
...
abcd2
git mktree
100755 blob abcd1 a.txt
100755 blob abcd2 b.txt
# resultant tree sha1:
abc123
git update-index --index-info
100755 tree abc123 fake.tree.path
git commit -m "fake.tree.path tree commit"
这似乎有效,但我想要的是:
git checkout fake.tree.path
并且有#34; a.txt"和" b.txt"写入工作目录。这可能吗?
答案 0 :(得分:1)
我认为我做错了是这样的:
git update-index --index-info
100755 tree abc123 fake.tree.path
应该是这样的:
git update-index --index-info
040000 tree abc123 fake.tree.path
现在正在执行git checkout fake.tree.path
根据需要构建目录。
答案 1 :(得分:1)
空索引git read-tree --empty
将树对象读入索引git read-tree <tree-isha>
除目录.git之外的空工作目录 ls -a | grep -vw .git | xargs rm -fr | xargs rm -fr
结帐索引到工作树 git checkout-index -a
参考资料