如何通过电子邮件发送git仓库?

95

我已经尝试过:

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

我先将archive.zip文件通过邮件发送给他们,他们将其解压到一个文件夹中。但是当他们尝试使用git命令时,发现这并不会产生有效的git存储库。


23
对于其他需要此信息的人:git archive 不适合这个任务的原因在于它只会打包工作树。它的应用场景是将所有源代码制作成 tar 包进行分发等类似操作。 - Cascabel
2个回答

130

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

请参见 "备份使用git的项目"

Git捆绑包只是一个文件,非常容易创建,并且可以像另一个远程一样导入。

一旦接收到,您可以从该文件克隆或提取。

如 "备份github存储库" 中所述,您可能希望在第一封电子邮件中使用 所有 分支创建捆绑包:

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

正如Andreas在评论中提到的那样,Scott Chacon最近(2010年3月)在ProGit书籍中就这个主题撰写了一篇“可爱”的文章:

Git的小捆绑


3
是的,所有的历史记录都被保存了,与“git archive”相反! - VonC
2
谢谢。我已经弄清楚了: git init,然后: git pull bundle.bdl master - yazzapps.com
6
“解包(unbundle it)?” 你可以简单地将其克隆(clone)来恢复一个普通的Git存储库,或者将其拉取(pull)到一个空的存储库。我现在明白了,这就是你所做的 ;) - VonC
2
@BVengerov 链接现在是 https://git-scm.com/blog/2010/03/10/bundles.html - VonC
2
@rmeador 是的,现在它是 https://git-scm.com/book/en/v2/Git-Tools-Bundling - VonC
显示剩余5条评论

7
如前面所述,使用git bundle是一种方法。
如果您想从只使用一个分支(我更喜欢仅捆绑main)创建一个捆绑包并通过电子邮件发送,您可以按照以下步骤操作:
git bundle create ~/mygitbackup.bundle main

上述操作将在您的主目录中创建一个git捆绑文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接