Git 如何将树对象写入目录(存储库外部)?

Git 如何将树对象写入目录(存储库外部)?,git,Git,我想将git树写入目录,即给定git ls树的输出: 我想做: % git some-command 312735a86fe300861ebf0e6b081616029c2f6b76 /tmp/output-dir 并在输出目录中: 我想象我可以解析git-ls-tree的输出,然后基于第二列递归调用git-ls-tree或git-cat-file。我的问题更多的是想知道是否有内置工具或外部工具允许这样做?您可以使用它将所需的树导出为.tar存档。默认情况下,它将其发送到stdout,并通过t

我想将git树写入目录,即给定git ls树的输出:

我想做:

% git some-command 312735a86fe300861ebf0e6b081616029c2f6b76 /tmp/output-dir
并在输出目录中:

我想象我可以解析git-ls-tree的输出,然后基于第二列递归调用git-ls-tree或git-cat-file。我的问题更多的是想知道是否有内置工具或外部工具允许这样做?

您可以使用它将所需的树导出为.tar存档。默认情况下,它将其发送到stdout,并通过tar-x将其输出解压缩到所需的目录中:

git archive HEAD -- subdir1 | tar -x -C /tmp/output-dir

将subdir1替换为要导出目录的存储库中的路径。

git checkout 312735a86。。。工作签出后,您可以将其移动到您选择的目录中。您还可以尝试使用-work-tree和/或-git-dir-see!谢谢@代码707确实,我把它们弄混了。现在修好了,谢谢。
tree output-dir
.
├── subdir1
│   └── test.txt
└── test2.txt
git archive HEAD -- subdir1 | tar -x -C /tmp/output-dir