如何在没有网络连接的情况下克隆 git 存储库

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

基础设施:我有两个主机(A 和 B)。我无法从 A 连接到 B,反之亦然。没有主机 C 可以从主机 A 和主机 B 访问。我可以双向发送电子邮件。允许文本附件。其他附件是不允许的。可能还有其他问题...

我想从主机 A 克隆一个 git 存储库到主机 B。我希望能够在两台主机上工作。我想将我的提交从 A 推送到 B,反之亦然。

问题:是否有一种简单的方法来传输提交(可用于我的基础设施)?

我已经尝试过:我可以使用

git format-patch
来制作我的提交的文本版本。但是生成的文件中只有作者日期。缺少提交者日期。并且缺少父提交。我可以查看其他主机 - 所以我知道这两个信息。然后,我可以使用
git commit
GIT_AUTHOR_DATE
GIT_COMMITER_DATE
生成具有正确提交哈希的提交。

有效 :) 但我必须输入一些命令。如果我想传输更多提交,我必须输入更多命令。

git git-push git-clone
1个回答
0
投票

您可以使用

git bundle
创建参考档案。来自手册页:

创建、解压和操作“捆绑”文件。捆绑包用于 Git 对象的“离线”传输,而无需位于网络连接另一端的活动“服务器”。

它们可用于创建存储库的增量备份和完整备份,并将一个存储库中的引用状态中继到另一个存储库。

由于要求是“纯文本”,因此您可以对捆绑包进行十六进制或

base64
编码以获得可以在接收主机上恢复的文本表示形式。

另一个快速而肮脏的解决方案是

tar
你的回购并编码为文本。由于显而易见的原因,使用这种方法不能进行增量更新。

两种解决方案都避免了混淆提交者和作者信息的问题。如果原始存储库(在主机 A 上)包含具有不同作者和提交者信息的提交,则设置 author == committer 会丢失信息。

© www.soinside.com 2019 - 2024. All rights reserved.