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

是否可以根据git分支拥有两个不同的子模块?,git,git-submodules,Git,Git Submodules,我的公司(咨询公司)正在为另一家公司(客户)发展。咨询公司项目的两名主要工程师(首席iOS和首席Android)具有为客户git维护源代码的登录功能。此外,我们(咨询公司)有一个内部git设置供开发人员使用 为了管理完成的内部工作,it部门将致力于内部git,并由一位潜在客户测试和合并到客户git,以向客户发布源代码 我们正在进行的一个项目需要使用一个库,该库是子模块,由另一家咨询公司为客户管理。我们的两个主要开发人员可以访问此子模块,因为我们可以访问客户git repo 是否可以在本地git上

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

为了管理完成的内部工作,it部门将致力于内部git,并由一位潜在客户测试和合并到客户git,以向客户发布源代码

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

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

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

这就是为什么要使用子模块的原因之一
git子模块
是另一个git回购中包含的独立git回购


发件人:

子模块
允许将外部存储库嵌入源代码树的专用子目录,始终指向特定提交


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

总之,子模块正是您在这里需要的

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

哦,当然可以

我们的主repo中的子模块只是各个上游repo的commit 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子模块地址

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

  • 或者我们独立地签出它们,并执行所有排序git命令,比如status、diff、branch、add、commit、pull、push
  • 或者,我们也可以更新作为主回购协议一部分的子模块的代码。以最简单的方式,我们所需要做的就是进入子模块目录,感觉自己在独立签出的项目中。所以,我的基本意思是:
  • ```

    ```

    我们可以转到主repo目录,提交/推送子模块repo的最新引用。或者,如果您想对它感兴趣,那么为子模块创建一个post-commit/push钩子,它会自动更新主repo上的子模块commit的引用


    是的,我想是的。您的repo中的子模块包含(仅?)相应上游repo的提交id。更正内部repo中的子模块仅与上游repo相同。可能有用:由于git 1.7.8,子模块被间接存储,以便切换分支不会丢弃它们。
    $ cd sub-module-master-directory
    $ git status/diff/add/commit/push/pull #WHATEVER you can practically do inside an independently checkout project