我想从github远程存储库导出,而不是克隆它.与svn export类似,我不想用它获取.git文件夹.我可以通过克隆和删除.git文件夹来解决它.我想知道是否有更清洁的方式?
我在某处读到了你可以使用git archive来实现这一点.
但是我收到以下错误..
$ git archive --format=tar --remote=git@github.com:xxx/yyy.git master | tar -xf -
Invalid command: 'git-upload-archive 'xxx/yyy.git''
You appear to be using ssh to clone a git:// URL.
Make sure your core.gitProxy config option and the
GIT_PROXY_COMMAND environment variable are NOT set.
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒.谢谢.
Sto*_*ica 58
感谢GitHub对Subversion的支持,您可以使用它svn export
来获取没有任何版本控制文件的项目:
svn export https://github.com/user/project/trunk
Run Code Online (Sandbox Code Playgroud)
请注意URL格式:
https://github.com/
USERNAME/PROJECTNAME
无 .git
/trunk
附在最后这样你就可以获得分支和子目录.
这将创建一个包含导出文件的目录.直接创建tar/zip是不可能的,你必须分两步完成(export + zip).这是一个限制svn export
.
正如@Jon指出的那样,这将在trunk
默认命名的目录中创建导出.如果您愿意,可以指定其他名称:
svn export https://github.com/username/projectname/trunk projectname
Run Code Online (Sandbox Code Playgroud)
您可以使用此技术导出项目的任何子目录.例如,如果您只想要some/path
,您可以:
svn export https://github.com/username/projectname/trunk/some/path local-dir-name
Run Code Online (Sandbox Code Playgroud)
您也可以从分支和标签中获取路径.端点https://github.com/username/projectname
完全充当具有常规布局的Subversion存储库,因此您将在其中找到分支https://github.com/username/projectname/branches
和标记https://github.com/username/projectname/tags
.
在错误地导出大量内容之前,最好首先检查路径的内容.你可以使用svn ls
,例如:
svn ls https://github.com/username/projectname/
Run Code Online (Sandbox Code Playgroud)
通常这应该给你:
branches/
tags/
trunk/
Run Code Online (Sandbox Code Playgroud)
您可以通过这种方式迭代地探索存储库.
对于未知(至少对我来说)原因,GitHub 不支持这一点.
We don’t support people running git-archive against our servers.
Run Code Online (Sandbox Code Playgroud)
看起来很傻,因为通过SVN,你可以,但......我赞成了@Janos的回答.
如果你的目标是要限制的信息的数量与服务器交换,你有没有考虑过使用clone
与--depth
?您仍然需要删除(大大减少).git
子目录:
git clone --depth=1 git@github.com:xxx/yyy.git && rm -rf yyy/.git
Run Code Online (Sandbox Code Playgroud)
小智 7
如果您只对从GitHub导出感兴趣,那么他们提供了下载tarball的机制.例如:
https://github.com/torvalds/linux/downloads
即使它说"这个存储库没有任何下载." 您仍然可以使用按钮下载主分支的tarball.
或者查看此链接以获取链接到标记的tarball列表:
https://github.com/torvalds/linux/tags
这适用于任何GitHub仓库,而不仅仅是Linux内核.
如果你需要这个命名提交(即分支和标签),那么你可以git clone --depth=1
结合使用git archive
值得知道的是,git clone --depth=1
克隆了所有分支和标签上的所有顶级提交(不仅是master
)。所以在做了这么浅的克隆之后,你可以进入本地目录并制作一个git archive --format=tar tag_to_be_exported
.
所以如果你想导出标签 release1.1
git clone --depth=1 git@github.com:xxx/yyy.git
cd yyy
git archive --format=tar release1.1 -o release1.1.tar
Run Code Online (Sandbox Code Playgroud)
所以除非你需要导出未命名的提交 ID,否则这可能是一个很好的解决方案。
归档时间: |
|
查看次数: |
30864 次 |
最近记录: |