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

问题描述 投票:0回答:8

没有 exact

svn export
相当于 git 的命令吗?真的吗?

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

  • git clone --depth 1
    <- Still downloads the .git folder.
  • git checkout-init
    <- Doesn't work for a remote repo, it works with a working copy (so you need to clone first).
  • git archive
    <- This would be the perfect solution, because it has a
    --remote
    参数,但它只有两种可能的格式:tar或zip,所以我需要在下载后解压/解压,为此我需要一个管道(|),但我在Windows上! ! (不是*n?x)
  • git clone --bare
    <- I still don't know what the heck this is, but it's not what I need.

请告诉我 git 中是否有真正的

svn export
替代品?

git svn version-control
8个回答
13
投票

来自如何在不修改历史记录的情况下进行快速克隆?:

git clone --depth 1 your_repo_url

然后,来自 rmdir 文档

rd /s /q .git

11
投票

问题“如何使用 git 进行 svn 风格的‘导出’?”就像问“我如何更换篮球的轮胎?”。你不能,但这不是篮球的错。是的,它是橡胶且充满空气,但相似之处仅此而已。

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

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

或者,你知道,完全忽略 git,只使用你克隆下来的文件。这也有效。


9
投票

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

git clone remote
rm -Rf .git

(在 Windows 上,它是

rd /s /q
。感谢@Bruno 的提示。)


3
投票

在 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>

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

更新:看起来此功能即将停止


3
投票

对于您的我仍然不知道这到底是什么

git clone --bare
将在没有工作副本的情况下克隆存储库。这通常在中央存储库上完成,以最大限度地减少磁盘空间的使用。

布鲁诺/King Crunch 给出了最佳答案。尽管如果您需要单行代码,您可以使用 git bash / cygwin 来进行管道传输。


2
投票

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

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

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

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

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

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


1
投票

关于你的观点,git archive <- This would be the perfect solution ...but it only has 2 possible formats: tar or 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 上”通常被认为是许多任务的障碍,但通过一些额外的工作,您几乎可以通过使用 CygwinMKS Toolkit 等软件赶上运行其他操作系统的人。

如果在确认您需要的任何命令都可以从 shell 中使用后,这种

git config …
命令仍然不适合您,那么您也许应该在 SuperUser.com 上的问题中发布有关您的配置的其他详细信息.


正如jbruni评论中所指出的,您可以使用

git archive --list
列出安装的可用格式。

请注意,“

git archive --list extra garbage
(man)默默地忽略了多余的命令行参数,该参数已在 Git 2.44(2024 年第一季度)中得到纠正。

请参阅 Junio C Hamano (gitster)

commit d6b6cd1(2023 年 12 月 21 日)。
(由 Junio C Hamano --
gitster
--
合并于 commit 6bf317d,2024 年 1 月 8 日)

archive
:“
--list
”不采取进一步选项

git archive --list blah
man应该注意到一个未使用的额外命令行参数。
就这样吧。

错误消息现在是:

extra command line parameter 'blah'

-1
投票

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

git checkout-index -a -f --prefix=/destination/path/
© www.soinside.com 2019 - 2024. All rights reserved.