git没有完全 svn export
等效命令?真的?
注意:这不是一个重复的问题。也就是说,我已经知道并测试了这些命令:
git clone --depth 1
< - 仍然下载.git文件夹。git checkout-init
< - 不适用于远程仓库,它适用于工作副本(因此您需要先克隆)。git archive
< - 这将是一个完美的解决方案,因为它有一个--remote
参数,但它只有两种可能的格式:tar或zip,所以我需要解压缩/解压缩后下载,为此我需要一个管道(|),但我在窗户上! (不是* n?x)git clone --bare
< - 我仍然不知道这是什么,但这不是我需要的。请告诉我git中是否有真正的svn export
替换?
答案 0 :(得分:13)
来自How do I do a quick clone without history revisions?:
git clone --depth 1 your_repo_url
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/