有没有一种方法可以将提交与git项目分开传输?

时间:2020-08-30 19:30:48

标签: git github

在工作中,我们在内部网络中有几台服务器(与Internet分离),但是它们使用github.com上托管的项目。到目前为止,我们的处理方式是不时地手动克隆存储库,然后使用USB设备将项目手动传输到本地网络。有时,这个项目可能很大-数十GB,并且传输非常缓慢。所以我的问题是:

我可以每次仅以某种方式转移必要的提交吗?

2 个答案:

答案 0 :(得分:1)

Git独立维护每个存储库,并允许您根据需要将它们同步在一起。 “中央”回购的想法是用户的约定。就git而言,所有仓库都是同等的“中央”。

考虑到这一点,您可以执行以下操作:

  1. 从github克隆到专用于此任务的可移动介质。
  2. 从可移动介质克隆到隔离的系统上。
  3. 将隔离库上的存储库保留为适当的git repo。

要更新:

  1. 从github拉入专用的外部驱动器。
  2. 从外部驱动器拉入隔离系统。

硬盘驱动器上的存储库会将GitHub识别为上游。隔离服务器上的存储库会将外部驱动器识别为上游驱动器。

这与您现在正在执行的操作非常相似,但有一个关键的区别。由于您使用git来管理历史记录,因此仅会传输不同的提交,从而使更新部分变得非常快。

当然,这将有前期费用,但您没有发生任何事:

  1. 获得专用的外部硬盘驱动器。
  2. 使用相同的运动网在隔离的服务器上安装git
  3. 将第一个克隆复制到外部驱动器上,这不可避免地会很慢。

答案 1 :(得分:1)

与其每次都克隆第三方项目的整个存储库,不如考虑使用“浅层克隆”,它只能克隆最后一次提交(达到一定深度,例如1)。

您还可以从github克隆单个分支(例如master)。

关于此的文章很多,例如,您可以阅读有关浅克隆here的信息。

想到的另一个有趣的解决方案是git archive command,它允许从命名树中创建文件档案。