没有集中式远程存储库的git

时间:2016-10-31 11:19:41

标签: git

假设我们是项目中的10个程序员,使用git。假设我们不想使用远程互联网(github)存储库,也不想使用远程网络集中式git存储库。

  • 我们现在如何同步?
  • 每个人都必须一个接一个地将其他程序员的存储库声明为远程存储库吗?

2 个答案:

答案 0 :(得分:1)

如果您不想使用专用服务器,则始终可以使用其中一个开发人员。本地存储库作为"来源"其他每个开发人员都会克隆。

这可以通过SSH轻松完成:

  1. 在源计算机上设置SSH服务器。
  2. 为每个开发人员提供对计算机的SSH访问权限(使用个人帐户或共享帐户,例如"开发人员")。
  3. 让每个开发人员从该计算机克隆存储库。
  4. 通过SSH克隆可以这样完成:

    git clone my-account@origin-machine:/full/path/to/repo/.git
    

    ... my-account 是用户帐户, origin-machine 是包含原始存储库的计算机。

    现在,每个开发人员都可以获取并推送更改,从而通过源计算机相互同步。

    以类似的方式,如果您愿意,可以通过设置更多SSH遥控器来与多台不同的机器同步,例如:

    git remote add machine2 my-account@machine2:/some/other/path/to/repo/.git
    git fetch machine2
    ...
    git push machine2 my-new-branch
    

    ...等

    但是,有一个问题:默认情况下,您可能无法将更改推送到当前在远程计算机上检出的分支(如果您尝试这样做,git会发出警告,并且相当坦率地说你do not want to do it anyway)。因此,您将不得不提出一种避免这种情况的分支策略(例如,让所有开发人员在不同的功能分支上工作而不是共同的分支是一个良好的开端)。

    话虽如此,我强烈建议使用具有裸存储库的本地专用服务器(它通常始终在线,并且您在开发人员计算机上没有检出分支的问题) 。服务器不一定要花哨 - 一个像Raspberry Pi一样简单的东西应该足够小团队(有一个简单的教程here)。

答案 1 :(得分:0)

我想你会明白official reference。为了您的时间,您应该考虑将一位开发人员升级为集成管理器,该管理员将自己保留在主存储库

或者,简单的说,设置内部git服务器(裸存储库,虽然我建议使用gitolite),这是我们在工作中所做的,备份和这些东西在那里免费提供。