首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将更改集从脱机计算机推送/拉到服务器?

如何将更改集从脱机计算机推送/拉到服务器?
EN

Stack Overflow用户
提问于 2015-07-12 15:30:19
回答 2查看 2.2K关注 0票数 8

我正在从事的软件项目最近从ClearCase迁移到Git。我仍然在学习基础知识,所以这个问题可能会在我对Git和它的能力更加熟悉之后再解决。

我的问题是: Git对于不能连接到中央存储库(即没有网络连接)的开发人员机器有一个很好的工作流机制吗?

详细信息

我们的办公室(地点A)有一个集中式的Git存储库/服务器。大多数开发人员将能够直接连接到服务器,无论是通过局域网在办公室还是通过VPN。该项目的安全策略不允许任何直接的ssh/https连接从LAN外部到服务器--在这种情况下,一切都必须通过VPN进行。

团队中的一名开发人员正在转移到客户的设施(地点C)现场工作.开发人员将在C位置的开发机器上工作,这是离线的,数据可以使用媒体(CD或DVD)在机器内外传输。开发人员需要在离线机器上有一两个分支代码,因为他将为客户进行bug修复、原型化功能,并充当项目的前线代表。

开发人员还将在家中拥有一台机器(位置B),在那里他可以使用VPN连接到位置A,并从中央回购系统中推拉。我们对此进行了测试,而且效果很好。

我们正在尝试确定是否可以使用DVD更新机器上的存储库。目前的存储库是1.6GB的源代码和3GB的第三方二进制文件(由于各个模块之间存在大量的互连性,我们还没有将其分解。这是一个25+年前遗留的研发代码库)。在最初的克隆之后,要更新/提取更改,我们需要将整个源代码刻录到磁盘上吗?或者我们可以使用补丁/归档来提高效率吗?如果可能的话,我想透明地在C位置维护机器上的历史记录(我知道应用修补程序会为其提交,但我不相信它会为修补程序中的每一项提取整个提交历史记录)。

我们也需要朝着相反的方向前进(因此我希望保持历史)。bug修复/特性需要推回中央存储库,而导出数据的唯一方法是通过DVD。我们是否需要将整个存储库刻录到磁盘上,还是只能通过差异来实现呢?在这种情况下,保存版本历史并不那么重要,但如果可能的话,我想维护它。

我们现在正在测试各种方法(Git只为我们运行了大约3个工作日),所以我缺少很多“我们已经尝试过的东西”。我想看看是否有人做过这件事或做过类似的事情,并收集了工作流、工具等方面的建议,以使这更容易。在理想的世界中,一旦我们在C位置设置了存储库,我想通过CD/DVD向开发人员提供一些小的更新(只有上次拉后的变更集)。

:Developer将是Windows7Git,Central是x64,团队通常使用SourceTree (但开发人员正在学习Git的Bash命令以真正理解它)。我们对运行脚本开放,

我确实看过这个问题,它暗示修补程序文件是一种方法;但是,需求是不同的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-12 15:48:06

您可以将一个.git文件夹拉链起来,并将其传输到另一个位置(例如,刻录在DVD上)。这将允许您获取内部的源。您还可以解压缩它,并使用git pull ../somewhere/unpackedgit来获取输入和输出的更改。

但是,您可以使用git bundle命令创建本质上是离线推送的内容,这就是您需要的更新内容。git亲书详细解释了如何做到这一点,并有以下介绍:

情况是这样的:您需要在git推送中偷偷摸摸。也许你的关系网坏了,你想给你的同事发些变化。也许你是在现场的某个地方工作,出于安全原因,你无法访问本地网络。也许你的无线/以太网卡坏了。也许你暂时无法访问共享服务器,你想给某人发邮件更新,你也不想通过格式补丁传输40次提交。 输入吉特包。bundle命令将通常通过git push命令推送到二进制文件中的所有内容打包,您可以在二进制文件中发送电子邮件或偷偷摸摸,然后将其解压缩到另一个存储库。

“”指的是“步行在计算机之间移动文件(穿着运动鞋)”和“以太网”上的双关语。

票数 12
EN

Stack Overflow用户

发布于 2019-03-15 12:44:42

如果要传输最后一次提交,请使用

代码语言:javascript
复制
git bundle create ../b1.bundle HEAD~..HEAD

(有许多方法来描述绑定提交的范围。)

这将创建文件../b1.bundle。您可以将许多提交绑定到一个包文件中。然后以某种方式将包文件传输到另一个系统。在那个系统上运行

代码语言:javascript
复制
git bundle unbundle ../b1.bundle

这将在脱离提交时在git中创建和打印提交。假设这个命令是打印出来的:

代码语言:javascript
复制
3db621f037d15cf00ad5f92b96cdd189c761a8f8

然后将此提交合并到您的分支中:

代码语言:javascript
复制
git merge 3db621f037d15cf00ad5f92b96cdd189c761a8f8

如果你在你的在线系统中做了一些修改,你也可以把它们捆绑在你的离线系统中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31369449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档