我有一个Git存储库,在另一个没有连接到互联网但没有网络访问权限的环境中有一个镜像。
不过,我需要在离线环境中保持原始副本的一致视图
为此,我将整个存储库从在线环境(通过DOK)复制到离线存储库中。然后我从这个副本拉到离线存储库
这个过程非常麻烦,因为存储库很大(20 GB),并且副本需要我进行多次病毒扫描以及从磁盘到磁盘的多个副本。
我的问题是,是否有办法只复制新提交(类似于推送期间发送的提交),以减少此同步的开销?
答案 0 :(得分:2)
这是git bundle
命令存在的一个原因。您可以将提交范围打包到单个捆绑文件中。例如,假设您已经在脱机环境中获得了提交abc123
,并且想要在master
之后打包之后发生的所有事情(您可以包含任意数量的分支/标记):< / p>
git bundle create foo.bundle abc123..master
然后,在将文件复制到离线环境之后,这是从包中合并其中一个分支的一种方法:
# (make sure master is checked out)
git fetch foo.bundle master
git merge FETCH_HEAD