我的公司(咨询公司)正在为另一家公司(客户)进行开发。该项目的两位主要工程师为咨询(领导iOS和Android Android),具有客户 git的登录功能,用于维护源代码。除此之外,我们(咨询)有一个内部git设置供我们的开发人员使用。
为了管理已完成的内部工作,它将提交给内部git,并由其中一个潜在客户 customers git进行测试和合并,以向客户端发布源代码。
我们正在开展的一个项目需要使用一个子模块库,由客户的另一家咨询公司管理。我们的两个主要开发人员可以访问此子模块,因为我们可以访问客户 git repo。
是否可以在我们的本地git上创建子模块的本地版本,以供我们的其他开发人员访问和维护外部git repo上的git-submodule地址?
答案 0 :(得分:2)
是否可以在我们的本地git上创建子模块的本地版本以供我们的其他开发人员访问并在外部git repo上维护git-submodule地址?
这是使用子模块的原因之一。 git submodule
是另一个git仓库中包含的独立git仓库。
来自the doc:
Submodules
允许将外部存储库嵌入到源树的专用子目录 中,总是指着一个特定的提交。
如上所述,子模块内容从独立存储库中提取到当前存储库中的文件夹。对子模块文件夹的任何修改都不会出现在根文件夹的根文件夹git status
中,也不会显示它们。
总结一下:子模块正是你需要的。
答案 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地址?
子模块在许多方面表现为独立项目仍然是我们主要回购的一部分。子模块代码的开发可以通过两种简单的方式进行,不需要我们任何额外的命令来学习
```
$ 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上子模块提交的引用。