使用 Git,是否可以在不克隆 repo 的情况下下载修订版?

With Git, is it possible to download a revision without cloning the repo?

基本上,我想下载特定版本的工作树而不克隆任何东西。特别是,我不希望在生成的下载中有任何 .git 目录。另一种思考我所要求的方法是裸仓库的逆向:裸工作树。

当您只想使用代码或数据而不打算修改它或玩弄历史时,用例非常简单。

我知道 git clone --depth 1,但根据我的经验,克隆的存储库仍然是单独的工作树的两倍。

git archive 可以胜任

尝试:git archive -vvv --remote=<REPO_URL> -o output.zip <REF>

请注意:REF 应该只是一个命名的 ref - 分支、标签等。它不允许您选择特定的提交。

更新

下载并解压 oneliner

$ git archive -vvv --remote=<REPO_URL> -o archive.tar <REF> && tar -xvvf archive.tar && rm archive.tar

更新 2

更好的单线

$ 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 的内容提取到 stack 目录中。