如何将 git 从不同的存储库合并到 1 个存储库中

How to merge git from different repositories into 1 repo

我正在做一个项目,我将整个项目拆分成多个模块,然后单独开发这些模块。我不希望单个模块的开发人员能够访问任何其他模块或整个项目,他们只能看到他们的 module.How 我可以使用现有的 git 系统来做到这一点,例如 git集线器或比特桶。 每个模块都是一个回购协议,然后是一个主回购协议,它连接到每个这些回购协议中以合并数据吗?

  • 如果你管理同一个仓库的不同分支的所有模块,开发者可以查看所有分支,你可以设置写权限给不同分支的不同开发者。

  • 如果您不希望开发人员查看他们不工作的其他模块,您应该将不同的模块管理到单独的git 存储库.

    假设 developerAmoduleA 上工作(在单独的 repoA 中),手动合并 repoA 到主仓库的方法如下:

    #In the main repo
    git remote add -f repoA <URL for repoA>
    git pull repoA master
    git add .
    git commit -am 'get change from repoA to main repo'
    git push origin master
    

    如果你想使用钩子将模块仓库合并到主仓库,你应该满足以下条件:

    1. 启用服务器端挂钩。您可以在每个模块 repo 上使用 post-push 挂钩。当更改推送到远程仓库时,您可以将更改拉到本地主仓库。
    2. 你最好在你自己的机器上设置远程仓库,因为如果你使用 github,服务器端挂钩对用户不可用。
    3. 如果你决定使用git hook,你应该考虑自动解决合并冲突。如果不解决合并冲突,git hook 的脚本将挂起或 return 错误。

    您也可以使用其他方式将模块仓库合并到主仓库中,例如git subtreegit sumodule