如何将来自不同存储库的git合并为1个repo

时间:2017-10-17 10:11:02

标签: git github version-control bitbucket githooks

我正在开展一个项目,我将整个项目分成多个模块,然后单独开发。我不希望各个模块的开发人员可以访问任何其他模块或整个项目,他们只能看到他们的模块。如何使用现有的git系统(如github或bitbucket)进行此操作。 每个模块是一个回购,然后是一个主要的回购,它们连接到这些回购中的每一个以合并数据?

1 个答案:

答案 0 :(得分:1)

  • 如果您管理同一个仓库的不同分支中的所有模块,开发人员可以查看所有分支,您可以为不同的设置写入权限不同分支机构的开发人员。

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

    假设developerA适用于moduleA(在单独的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. 启用服务器端挂钩。您可以在每个模块仓库上使用post-push挂钩。当更改推送到远程仓库时,您可以将更改提取到本地主仓库。
    2. 您最好在自己的计算机上设置远程回购,因为如果您使用github,则服务器端挂钩不可供用户使用。
    3. 如果您决定使用git hook,则应考虑自动解决合并冲突。如果未解决合并冲突,git hook的脚本将挂起或返回错误。
    4. 您还可以使用其他方式将模块回购合并到主回购中,例如git subtreegit sumodule等。