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

git克隆,然后删除.git存储库目录。git签出索引暗示了这一功能,但以“只需将所需的树读入索引……”开头,我不完全确定该怎么做。gitexport是一个第三方脚本,本质上是将git克隆到临时位置,然后再将rsync--exclude='.git'复制到最终目标。

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


当前回答

如果存储库托管在GitHub上,则为特殊情况。

只需使用svn导出。

据我所知,Github不允许存档--远程。虽然GitHub是svn兼容的,而且他们确实有所有的git repos svn可访问,所以你可以像平常一样使用svn导出,只需对GitHub url进行一些调整。

例如,要导出整个存储库,请注意URL中的主干如何替换master(或项目的HEAD分支设置为什么):

svn export https://github.com/username/repo-name/trunk/

您可以导出单个文件,甚至导出某个路径或文件夹:

svn export https://github.com/username/repo-name/trunk/src/lib/folder

jQuery JavaScript库示例

HEAD分支或主分支将使用主干:

svn ls https://github.com/jquery/jquery/trunk

非HEAD分支机构可在/branches/下访问:

svn ls https://github.com/jquery/jquery/branches/2.1-stable

/tags/下的所有标签以相同的方式:

svn ls https://github.com/jquery/jquery/tags/2.1.3

其他回答

我发现了选项2的含义。从存储库中,您可以执行以下操作:

git checkout-index -a -f --prefix=/destination/path/

路径结尾处的斜线很重要,否则将导致文件位于带有前缀“path”的/target中。

因为在正常情况下,索引包含存储库的内容,所以“将所需的树读入索引”没有什么特别的事情可做。它已经在那里了。

签出索引中的所有文件都需要-a标志(我不确定在这种情况下省略此标志意味着什么,因为它不能满足我的需要)。-f标志强制覆盖输出中的任何现有文件,而此命令通常不会这样做。

这似乎是我想要的那种“git导出”。

从Git手册:

使用git签出索引“导出整个树”

前缀功能基本上使使用git签出索引作为“导出为树”函数变得简单。只需将所需的树读入索引,然后执行以下操作:

$git签出索引--prefix=git导出目录/-a

我广泛使用git子模块。这个适合我:

rsync -a ./FROM/ ./TO --exclude='.*'

这将复制除.dot文件之外的所有内容。我使用这个将git克隆项目导出到我的web应用程序的git repo中,而不使用.git文件。

cp-R/git repo/path/to/destination的路径/

简单的旧bash非常有用:)

如果存储库托管在GitHub上,则为特殊情况。

只需使用svn导出。

据我所知,Github不允许存档--远程。虽然GitHub是svn兼容的,而且他们确实有所有的git repos svn可访问,所以你可以像平常一样使用svn导出,只需对GitHub url进行一些调整。

例如,要导出整个存储库,请注意URL中的主干如何替换master(或项目的HEAD分支设置为什么):

svn export https://github.com/username/repo-name/trunk/

您可以导出单个文件,甚至导出某个路径或文件夹:

svn export https://github.com/username/repo-name/trunk/src/lib/folder

jQuery JavaScript库示例

HEAD分支或主分支将使用主干:

svn ls https://github.com/jquery/jquery/trunk

非HEAD分支机构可在/branches/下访问:

svn ls https://github.com/jquery/jquery/branches/2.1-stable

/tags/下的所有标签以相同的方式:

svn ls https://github.com/jquery/jquery/tags/2.1.3