Git pull setup将子模块更新为远程

时间:2017-08-01 13:41:04

标签: git git-submodules pull

我试图设置git以在所有git pull命令上执行git submodule update --init --recursive(或者当在服务器端提取新提交时)。

我的目标是让我的同事和我不会被执行git add *git pull的人再次咬伤,然后必须手动播放子模块命令以恢复他的问题

我的问题是我认为克隆项目和/或拉动应该使用远程git的配置进行更新(这包括子模块)。在开发图书馆的高级项目中,情况发生了很多,但人们忘了更新他们的子模块......

我虽然现在已经回答了,但我找不到它。现在,我有同事想要一个git repo(没有子模块)但是它为CI / CD的观点带来了它自己的一系列问题...

我不想做像Piper(谷歌解决方案)这样的事情来管理这个...我相信有人必须得到答案,并且可以帮助我解决这个问题。

此致 Eric Lafontaine

1 个答案:

答案 0 :(得分:0)

我把这个答案留在参考中。为了解决在pull上更新子模块的问题,我们需要了解git子模块是如何工作的。

子模块是另一个git仓库中的git仓库的嵌套。换句话说,第一个Git(项目)引用另一个Git仓库(子模块,可能是一个库)。使用标准子模块时,它将作为具有特定SHA的分离头检出。这意味着对它进行拉动将 而不是 更新项目参考。

如果子模块配置为遵循分支,那么这意味着我们期望子模块发展,我们也期望它始终符合我们项目的某些标准。

考虑到这一点,当我们执行git pull时,我们希望将子模块“检出”到我们已配置的修订版本(无论是特定提交还是分支)。为此,我们可以将“fetch”配置为在我们的配置上递归;

git config --global fetch.recurseSubmodules true

我希望以这种方式配置,你想使用git子模块。然后,这个技巧可能有助于在执行推送之前查看子模块中的冲突;

git config --global push.recurseSubmodules check

REF:[https://chrisjean.com/git-submodules-adding-using-removing-and-updating/]