我一直想知道是否有一个好的“git export”解决方案可以在没有 .git
存储库目录的情况下创建树的副本。我至少知道三种方法:
git clone
然后删除.git
存储库目录。-
git checkout-index
暗指此功能,但以“只需将所需的树读入索引...”开头,我不太确定该怎么做。 -
git-export
是一个第三方脚本,本质上是将git clone
操作到一个临时位置,然后将rsync --exclude='.git'
操作到最终目的地。
这些解决方案都没有真正让我满意。最接近 svn export
的可能是选项 1,因为两者都要求目标目录首先为空。但选项 2 似乎更好,假设我能弄清楚将树读入索引意味着什么。
最佳答案
可能实现此目的的最简单方法是使用 git archive
.如果您真的只需要展开的树,您可以这样做。
git archive master | tar -x -C /somewhere/else
大多数时候我需要从 git 中“导出”一些东西,无论如何我都想要一个压缩的存档,所以我会做这样的事情。
git archive master | bzip2 >source-tree.tar.bz2
ZIP 存档:
git archive --format zip --output /full/path/to/zipfile.zip master
git help archive
有关更多详细信息,它非常灵活。
请注意,即使归档文件不包含 .git 目录,它也会包含其他 stash 的 git 特定文件,如 .gitignore、.gitattributes 等。如果您不希望它们出现在归档文件中,确保在 .gitattributes 文件中使用 export-ignore 属性并在归档之前提交它。 Read more...
注意:如果有兴趣导出索引,命令为
git checkout-index -a -f --prefix=/destination/path/
(有关详细信息,请参阅 Greg's answer)
关于git - 做一个 "git export"(比如 "svn export")?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160608/