基本上,我想在特定版本下载工作树而不克隆任何内容。特别是,我不想在结果下载中使用任何.git目录。想到我要求的另一种方式是与一个裸露的回购交谈:一棵光秃秃的工作树。
当您只是想使用代码或数据而无需修改或使用历史记录时,用例非常简单。
我知道git clone --depth 1
,但根据我的经验,克隆的回购仍然只有工作树的两倍。
答案 0 :(得分:4)
git archive
可以完成这项工作
尝试:git archive -vvv --remote=<REPO_URL> -o output.zip <REF>
请注意:REF
应该只是一个命名的ref - branch,tag等。它不允许你选择某个提交。
<强>更新强>
下载并提取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 -
您可以使用--prefix
的{{1}}标志添加前缀目录,或者您可以参考git archive
文档将内容提取到其他目录中。
例如
tar
将repo的内容提取到$ git archive -vvv --prefix=stack/ --remote=<REPO_URL> <REF> | tar -xvf -
目录。