我们在一个大团队中使用 git 作为项目的源代码。现在大约有一半的开发商正在离开,进入项目的现场阶段。此阶段将涉及大量开发,即许多提交。同时剩下的另一半也将继续编写代码。
不幸的是,现场的互联网连接时断时续且不可靠。然而,至关重要的是,现场团队能够在彼此之间同步(提交/推送/拉取)他们的更改。但同样重要的是,办公室其他团队成员对“中央”git 存储库所做的更改也是可用的。
因此,我正在寻找一种设置,即使在互联网长时间关闭的情况下,也可以让现场团队使用 git 高效工作,而且还能够在互联网可用时与办公室同步。
有没有一种简单且万无一失的方法可以做到这一点?
我的第一个想法:带一台上网本作为“服务器”,并拥有存储库的裸克隆。然后让现场团队将其来源更改为上网本,并向上网本推送和拉取。但与主存储库的同步给我带来了一些麻烦。在上网本上执行 git Push 效果很好,但 git fetch 不会返回我在主存储库上所做的更改。
此外,我担心如果两个存储库上的文件均已更改并且存在冲突,会发生什么情况 - 我想有人需要在上网本上解决冲突并在同步发生之前提交它?
您的设置应该可以工作,所以我不确定提取有什么问题。但是,当涉及到从公司的中央存储库获取数据并解决冲突时,应该这样做locally:每当互联网连接建立时,开发人员就可以从中央存储库获取数据,在自己的计算机上合并并解决冲突,并将结果推送到中央存储库和现场存储库。我认为永远不应该直接在用作服务器的存储库上工作(如果它是一个裸存储库,它应该是,你不能直接在它上工作,因为没有工作副本)。这也使您无需在现场服务器上设置开发环境。
此外,现场开发人员不应更换origin
与现场存储库;相反,他们应该添加一个新的遥控器git remote add
,并将其称为例如onsite
。然后,每当一个人想做一件事时pull
, push
or fetch
,可以选择使用公司中央仓库还是现场仓库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)