是否有可能根据git分支有两个不同的子模块?

时间:2016-03-14 01:29:48

标签: git git-submodules

我的公司(咨询公司)正在为另一家公司(客户)进行开发。该项目的两位主要工程师为咨询(领导iOS和Android Android),具有客户 git的登录功能,用于维护源代码。除此之外,我们(咨询)有一个内部git设置供我们的开发人员使用。

为了管理已完成的内部工作,它将提交给内部git,并由其中一个潜在客户 customers git进行测试和合并,以向客户端发布源代码。

我们正在开展的一个项目需要使用一个子模块库,由客户的另一家咨询公司管理。我们的两个主要开发人员可以访问此子模块,因为我们可以访问客户 git repo。

是否可以在我们的本地git上创建子模块的本地版本,以供我们的其他开发人员访问维护外部git repo上的git-submodule地址?

2 个答案:

答案 0 :(得分:2)

  

是否可以在我们的本地git上创建子模块的本地版本以供我们的其他开发人员访问并在外部git repo上维护git-submodule地址?

这是使用子模块的原因之一。 git submodule是另一个git仓库中包含的独立git仓库。

来自the doc

  

Submodules 允许将外部存储库嵌入到源树的专用子目录 中,总是指着一个特定的提交。

如上所述,子模块内容从独立存储库中提取到当前存储库中的文件夹。对子模块文件夹的任何修改都不会出现在根文件夹的根文件夹git status中,也不会显示它们。

总结一下:子模块正是你需要的。

enter image description here

答案 1 :(得分:1)

  

根据git分支,是否可以有两个不同的子模块?

哦,是的,当然。

我们主要仓库中的子模块只是相应上游仓库的提交sha id。也就是说,我们只需要初始化主仓库中的两个子模块指向两个不同的分支。以下命令应该非常清楚:

$ git submodule add path-to-sub-module-upstream sub-module-master-directory
$ git submodule add path-to-sub-module-upstream sub-module-prod-directory
$ git config -f .gitmodules submodule.sub-module-master-directory.branch master
$ git config -f .gitmodules submodule.sub-module-prod-directory.branch production
$ git commit -m 'added two sub-modules for master and production branches'

此外,您还可以使用$ git diff --cached --submodule来验证要提交的内容

  

是否可以在我们的本地git上创建子模块的本地版本以供我们的其他开发人员访问并在外部git repo上维护git-submodule地址?

子模块在许多方面表现为独立项目仍然是我们主要回购的一部分。子模块代码的开发可以通过两种简单的方式进行,不需要我们任何额外的命令来学习

  1. 要么我们独立签出它们,要么对所有git命令进行排序,如status,diff,branch,add,commit,pull,push ......
  2. 或者我们也可以更新作为主回购的一部分的子模块的代码。最简单的方法我们需要做的就是进入子模块目录和FEEL,就像你在独立检出项目中一样。所以,我的意思如下:
  3. ```

    $ cd sub-module-master-directory
    $ git status/diff/add/commit/push/pull #WHATEVER you can practically do inside an independently checkout project
    

    ```

    发布我们可以转到主repo目录并提交/推送子模块repo的最新引用。或者如果你想了解它,那么为子模块创建一个post-commit / push hook,它会自动更新主repo上子模块提交的引用。

    More details here