我如何通过电子邮件向某人发送git存储库?


84

我努力了:

git archive HEAD --format=zip > archive.zip

:然后我通过电子邮件发送archive.zip,另一方面,他们将archive.zip解压缩到一个文件夹中。但是当他们尝试任何git命令时,他们发现这不会产生有效的git存储库


19
对于其他发现此问题的人:git存档不适合该工作的原因是它仅打包工作树。它用于做所有源代码的压缩文件,进行分发。
卡斯卡贝尔

Answers:


113

您可以使用git bundle一个文件并通过电子邮件发送

请参阅“备份使用git的项目

git bundle只是一个文件,可以很容易地创建它并再次导入,因为它可以像另一个远程文件一样对待。

收到后,您可以克隆它或从该文件获取。

如“ github仓库备份”所述,您可能希望第一封电子邮件将您的捆绑包与所有分支捆绑在一起:

$ git bundle create /tmp/foo-all --all

正如Andreas在评论中提到的那样,Scott Chacon最近(2010年3月)在ProGit博客中针对此主题撰写了一篇“可爱”文章:

吉特的小捆绑


3
@Zubair:是的,所有的历史记录都被保存了,相反git archive
VonC 2010年

2
谢谢。我知道了:git init,然后:git pull bundle.bdl master
appshare.co 2010年

6
@Zubair:解开吗?您可以简单地克隆它以恢复正常的git repo。或将其拉入一个空的仓库中。这就是我现在所看到的;)
VonC 2010年

1
这是有关如何使用bundle命令及其作用的很好的概述:progit.org/2010/03/10/bundles.html
Andreas

2
@BVengerov链接现在是git-scm.com/blog/2010/03/10/bundles.html
VonC

4

如先前的回答所述,git bundle是这种方式。

如果要仅使用一个分支(我更喜欢仅捆绑主服务器)并通过电子邮件发送来创建捆绑包,则可以执行以下操作:

$ git bundle create /tmp/mygitbackup.bundle master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.