【发布时间】:2010-09-14 16:58:29
【问题描述】:
我一直想知道是否有一个好的“git 导出”解决方案可以在没有 .git 存储库目录的情况下创建树的副本。我知道的方法至少有以下三种:
-
git clone然后删除.git存储库目录。 -
git checkout-index暗示了此功能,但以“只需将所需的树读入索引...”开头,我不完全确定该怎么做。 -
git-export是一个第三方脚本,它本质上是在一个临时位置执行git clone,然后在最终目的地执行rsync --exclude='.git'。
这些解决方案中没有一个真正让我感到满意。最接近 svn export 的可能是选项 1,因为两者都要求目标目录首先为空。但是选项 2 似乎更好,假设我可以弄清楚将树读入索引意味着什么。
【问题讨论】:
-
@rnrTom:见 Somov 的回答。 (tar 存档中没有任何“压缩”)。
-
@mrTom
git archive --format zip --output "output.zip" master -0会给你一个未压缩的存档(-0 是未压缩的标志)。 git-scm.com/docs/git-archive. -
我同意@mrTom,我不认为档案是压缩还是未压缩是主要问题。使用 SVN,我可以直接从远程存储库
export一个 250 kB 的子目录(否则它的大小可能是 200 MB,不包括修订版) - 我只会访问网络进行 250 kB(左右)的下载传输。使用git,必须在服务器上启用archive(所以我不能尝试) - 从服务器上的clone --depth 1仍可能检索到25 MB 的存储库,其中.git子文件夹单独占用15 MB。因此,我仍然会说答案是“不”。 -
这里有一个简单的方法:
git archive -o latest.zip HEAD -
我多年来一直使用这个问题作为“git export”的手册页,仅供参考。
标签: git export git-archive svn-export