对于git,确切的`svn export`等效命令?

时间:2011-06-30 17:24:58

标签: git svn version-control

git没有完全 svn export等效命令?真的?

注意:这不是一个重复的问题。也就是说,我已经知道并测试了这些命令:

  • git clone --depth 1< - 仍然下载.git文件夹。
  • git checkout-init< - 不适用于远程仓库,它适用于工作副本(因此您需要先克隆)。
  • git archive< - 这将是一个完美的解决方案,因为它有一个--remote参数,但它只有两种可能的格式:tar或zip,所以我需要解压缩/解压缩后下载,为此我需要一个管道(|),但我在窗户上! (不是* n?x)
  • git clone --bare< - 我仍然不知道这是什么,但这不是我需要的。

请告诉我git中是否有真正的svn export替换?

8 个答案:

答案 0 :(得分:13)

来自How do I do a quick clone without history revisions?

git clone --depth 1 your_repo_url

然后,从the rmdir documentation

rd /s /q .git

答案 1 :(得分:10)

问题“如何使用git进行svn-style'导出?”就像问“我怎样才能改变我的篮球轮胎?”。你不能,但这不是篮球的错。是的它是橡胶和充满空气,但相似之处到此为止。

您只需要使用svn“export”,因为它会使用.svn目录污染每个子目录。 Git不这样做,所以你真的不需要它。克隆是一个导出,只是在根目录下有一个目录,所有存储库业务都在其中。

最简单的方法是克隆repo,然后从repo的顶层删除.git目录。这样做,它不再是一个回购,它只是一个独立的文件目录。

或者,你知道,一起忽略git并只使用你克隆的文件。这也有效。

答案 2 :(得分:9)

只需删除工作副本中的存储库。

git clone remote
rm -Rf .git

(在Windows上,它是rd /s /q。感谢@Bruno的提示。)

答案 3 :(得分:4)

在像GitHub这样的托管中,你可以精确地svn export

示例:

svn export https://github.com/GNOME/banshee/branches/master

甚至偏! (存储库的某个子部分)

示例:

svn export https://github.com/liferay/liferay-portal/branches/6.1.x/tools

对于您自己的存储库,您应该创建一些GitHub存储库并将其添加为远程存储库:

git remote add github https://github.com/<user>/<repo>.git

然后

git push github <branch>

现在您可以按上述方式进行部分结帐。

答案 4 :(得分:3)

对于你的我仍然不知道这是什么git clone --bare将克隆存储库而不需要工作副本。这通常在中央存储库上完成,以便最大限度地减少磁盘空间使用。

Bruno / King Crunch有最好的答案。虽然你可以使用git bash / cygwin来允许你管道,如果你需要一个单行。

答案 5 :(得分:0)

重点说明, git archive&lt; - 这将是完美的解决方案......但它只有两种可能的格式:tar或zip ,您可以使用示例中的文档添加新格式git-archive(1)手册页的一部分:

   git config tar.tar.xz.command "xz -c"
       Configure a "tar.xz" format for making LZMA-compressed tarfiles.
       You can use it specifying --format=tar.xz, or by creating an output
       file like -o foo.tar.xz.

虽然“在Windows上”通常被认为是许多任务的障碍,但通过一些额外的工作,您几乎可以通过使用Cygwin或{{3}等软件来赶上运行其他操作系统的人}。

如果确认您的shell中有任何所需的命令后,这种git config …命令仍不适用于您,那么您应该在{{{}}问题上发布有关您的配置的其他详细信息。 {3}}

答案 6 :(得分:0)

这是一个比较老的问题,但是我认为我没有找到“明显的解决方案”。经过对git文档的研究,我发现:

git archive --format=tar --remote ... | tar xf -

这将甚至从远程存储库接收内容,并将tar存档写入stdout。然后,tar命令将提取内容并在当前目录中创建它。

如果您想从本地存储库(显然不是问题中所需的请求)进行操作,则

git archive --format=tar ... | ( cd /your/path && tar xf - )

将为您解决问题。如果已安装tar,则第一种方法也适用于Windows命令提示符。后者很可能不会,并且可能会覆盖您的目录。

答案 7 :(得分:-1)

来自https://stackoverflow.com/a/160719/43597

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