2011-03-27 96 views
2

我们使用git作为我们项目的源代码,在一个大型团队中工作。现在大约有一半的开发人员正在进行项目的现场阶段。这个阶段将涉及大量开发,即许多提交。与此同时,留下的另一半也将继续致力于代码。两个完全相同的git仓库

不幸的是,现场只会有间歇性和不可靠的互联网连接。然而,现场团队能够在另一个团队之间同步(提交/推送/拉动)他们的变更是至关重要的。但同样重要的是,办公室的其他团队可以对“中央”git存储库进行更改。

因此,我正在寻找一种设置,可以让现场团队高效地使用git,即使互联网长时间处于关闭状态也能够与办公室进行同步互联网是可用的。

有没有一种简单而又简单的方法可以做到这一点?

我的第一个想法是:带上我们的上网本充当“服务器”,并有一个裸仓库的克隆。然后现场团队将其起源更改为上网本,并推向上网本。但是与主存储库的同步正在给我带来一些麻烦。在上网本上做git push可以正常工作,但是git fetch不会返回我在主repo上所做的更改。 此外,我很担心,如果一个文件在repos上发生了更改并发生冲突会发生什么情况 - 我想有人需要在上网本上工作来解决冲突并在同步发生之前提交它?

+0

“在上网本上做git push工作正常,但是git fetch不会返回我在主repo上所做的更改。” - 这应该工作。也许你有一些配置不正确? – MatrixFrog 2011-03-27 21:08:26

+0

这确实是可能的。显然,我不知道什么,否则我会修复它;-) – Yamal 2011-03-27 21:13:19

回答

5

你的设置应该可以工作,所以我不确定这个抓取有什么问题。然而,当从公司的中央仓库获取并解决冲突时,应该在本地执行:每当互联网连接启动时,一位开发人员可以从中央仓库取货,合并并解决他自己的计算机上的冲突,以及将结果推向中央回购和现场回购。我相信一个人不应该直接在一个用作服务器的存储库上工作(如果它是一个裸仓库,它应该是,因为没有工作副本,所以你不能直接在仓库上工作)。这也可以帮助您在现场服务器上设置开发环境。

此外,现场开发人员不应该用现场存储​​库替换origin;相反,他们应该用git remote add添加一个新的远程设备,并将它称为例如onsite。然后,无论何时想要执行pullpushfetch,都可以选择是使用公司的中央回购还是现场回购。

+2

只是为了明确,你的上网本回购应该是一个裸回购(检出没有工作副本) – brycemcd 2011-03-28 01:18:38

+0

@Bryce:是的,这就是我的意思是“现场服务器回购“ - 但我看到我可以更清楚地了解它。 – 2011-03-28 01:20:54

+0

绝对,你钉了它,我不是故意暗示你没有。我只是认为,对于OP来说,在不止一个地方看到它是有用的,可以把这个观点带回家。 – brycemcd 2011-03-28 17:01:07