基本上,我想在不克隆任何内容的情况下下载特定修订版的工作树。特别是,我不希望在结果下载中有任何.git目录。思考我所要求的另一种方式是与裸回购相反:一棵裸树。
当您只想使用代码或数据而不想修改或处理历史时,用例非常简单。
我知道git clone --depth 1
,但根据我的经验,克隆的repo仍然是单独工作树的两倍大。
git archive
可以完成的工作
尝试:git archive -vvv --remote=<REPO_URL> -o output.zip <REF>
请注意:REF
应该只是一个命名的ref-branch、标记等。它不允许您选择特定的提交。
更新
下载并提取oneliner
$ git archive -vvv --remote=<REPO_URL> -o archive.tar <REF> && tar -xvvf archive.tar && rm archive.tar
更新2
更好的oneliner
$ git archive -vvv --remote=<REPO_URL> <REF> | tar -xvf -
您可以使用git archive
的--prefix
标志添加前缀目录,也可以参考tar
文档将内容提取到其他目录中。
例如
$ git archive -vvv --prefix=stack/ --remote=<REPO_URL> <REF> | tar -xvf -
将repo的内容提取到CCD_ 11目录中。