小编典典

做一个“git export”(比如“svn export”)?

git

我一直想知道是否有一个好的“git export”解决方案可以创建一个没有.git存储库目录的树的副本。我知道的方法至少有以下三种:

  1. git clone然后删除.git存储库目录。
  2. git checkout-index暗指此功能,但以“只需将所需的树读入索引…”开头,我不完全确定该怎么做。
  3. git-export是一个第三方脚本,本质上是先git clone进入一个临时位置,然后rsync –exclude=’.git’`进入最终目的地。

这些解决方案中没有一个真正让我感到满意。最接近的svn export可能是选项 1,因为两者都要求目标目录首先为空。但是选项 2 似乎更好,假设我可以弄清楚将树读入索引意味着什么。


阅读 281

收藏
2022-02-07

共1个答案

小编典典

实现这一点的最简单方法可能是使用git archive. 如果你真的只需要扩展的树,你可以做这样的事情。

git archive master | tar -x -C /somewhere/else

大多数时候,我需要从 git 中“导出”某些东西,无论如何我都想要一个压缩存档,所以我做这样的事情。

git archive master | bzip2 >source-tree.tar.bz2

压缩包:

git archive --format zip --output /full/path/to/zipfile.zip master 

git help archive有关更多详细信息,它非常灵活。


请注意,即使存档不包含 .git 目录,它也会包含其他隐藏的特定于 git 的文件,如 .gitignore、.gitattributes 等。如果您不希望它们在存档中,请确保您在 .gitattributes 文件中使用 export-ignore 属性并在归档之前提交它。阅读更多…


注意:如果你有兴趣导出索引,命令是

git checkout-index -a -f --prefix=/destination/path/
2022-02-07