我想将git树写入目录,即鉴于git ls-tree
的输出:
% git ls-tree -lrt 312735a86fe300861ebf0e6b081616029c2f6b76
040000 tree ba37a4590a12acdd773e444b06e75ad151150ed2 - subdir1
100644 blob deba01fc8d98200761c46eb139f11ac244cf6eb5 10 subdir1/test.txt
100644 blob dce813842fd90177bd0fbfd3011797934ee31303 15 test2.txt
我想做:
% git some-command 312735a86fe300861ebf0e6b081616029c2f6b76 /tmp/output-dir
并加入output-dir
:
tree output-dir
.
├── subdir1
│ └── test.txt
└── test2.txt
我想我可以解析git ls-tree
的输出,然后基于第二列调用git ls-tree
或git cat-file
进行解析。我的问题是更多地了解是否有内置工具(或外部工具)可以这样做?
答案 0 :(得分:1)
您可以使用git archive
将所需的树导出为.tar
存档(默认将其发送到stdout
),并通过tar -x
将其输出通过管道解压缩文件放入所需的目录:
git archive HEAD -- subdir1 | tar -x -C /tmp/output-dir
将subdir1
替换为要导出目录的存储库内的路径。