两个相同的git存储库

时间:2011-03-27 21:03:18

标签: git

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

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

所以我正在寻找一种设置,允许现场团队使用git高效工作,即使互联网长时间停机,也可以在互联网上与办公室同步是可用的。

有一种简单易行的方法吗?

我的第一个想法:带上网本作为“服务器”,并对存储库进行彻底克隆。然后让现场团队将他们的起源改为上网本,并推送到上网本。但是与主存储库的同步给我带来了一些麻烦。在上网本上进行git推送工作正常,但git fetch不会返回主回购上的更改。 另外,我担心如果文件在两个repos上都被更改并且存在冲突会发生什么 - 我想有人需要在上网本上解决冲突并在同步发生之前提交它?

1 个答案:

答案 0 :(得分:6)

您的设置应该有效,所以我不确定抓取有什么问题。但是,当从公司的中央仓库获取并解决冲突时,这应该在本地完成:每当互联网连接启动时,一个开发人员可以从中央仓库获取,合并并解决冲突他自己的计算机,并将结果推送到中央仓库和现场仓库。我相信一个人永远不应该直接在一个被用作服务器的存储库上工作(如果它是一个裸存储库,它应该是,你不能直接在它上面工作,因为没有工作副本)。这也使您无需在现场服务器上设置开发环境。

此外,现场开发人员不应将origin替换为现场存储库;相反,他们应该使用git remote add添加一个新的遥控器,并将其称为例如onsite。然后,只要有人想要pullpushfetch,就可以选择使用公司的中央仓库还是现场仓库。