我有两个git存储库,我需要对其进行同步而它们之间没有直接的网络连接。
我不能按原样使用git fetch
或git push
,因为它们两个都需要直接连接。补丁文件似乎也不可行,因为它们丢失了提交树结构。虽然,我发现git在后台使用git pack-objects
和git unpack-objects
来生成和使用打包文件。
我能以某种方式使Git为我生成该packfile(如果我提供了所需的提交范围)然后使用它吗?也许有某种方法可以保留补丁中的结构?也许还有其他方法?
谢谢
答案 0 :(得分:2)
尝试git bundle。
捆绑软件用作只读存储库。要创建分支master
的捆绑包,
git bundle create foo.bundle master
然后,您可以将foo.bundle
移到另一个存储库所在的计算机上,并读取/获取所需的元数据。
cd <the_other_repository>
git checkout master
git pull <path_to_foo.bundle> master
# or maybe you want to cherry-pick a single commit
git fetch <path_to_foo.bundle> master
git cherry-pick <commit>
答案 1 :(得分:0)
即使没有远程存储库,Git版本也可以工作,您可以push
和pull
在您自己的计算机之间来回移动。有一个规则要遵循:两个存储库都必须具有共同的提交历史记录,下一个很简单。您只需要使用
remote
git remote add repo2 path/to/repo2/
path/to/repo2
是您其他存储库(例如../../repo2
)的相对路径。
然后:
git pull repo2 branch