GIT子模块容易踩的坑

首先进入项目目录,并执行命令 git submodule add 【空格】【子项目代码仓库地址或目录】【空格】 【子模块存放目录】,如图:

通过以上命令成功将远程代码仓库中的子项目作为子模块存放在了当前项目下的addons/hz_moduletest这个目录里,接下来执行下图所示操作将项目更新推送到GIT服务器上,注意看当前位置是项目根目录:

接下来是重点,当修改了子模块中的内容后,如果想推送最新代码到GIT服务器需要分别推送子模块和整个项目,如图所示,同样注意图中当前目录的变化:

上图中需要注意的是,这里不要git add .

到此,GIT子模块用法说完了,下面说说坑,就是CLONE带有子模块的项目时,子模块里的内容是空的(无论对子模块是否有权限),如果有权限可以按下图操作将子模块的内容从远程代码仓库获取:

这样子模块里的内容就获取到了,如果要在这个子模块里修改或增加文件一定要用git commit -a =>git push这种步骤推送;按照传统的git add . =>git commit -m => git push推送会失败的,很可能会遇到这种游离状态:

一旦出现上图这种问题,可以按如下步骤解决:

首先,从游离状态回到主分支

然后git commit -a =>git push

当然,最后要回到项目根目录按传统方式推送项目到GIT。

END,这个坑跳进去我也是好久没出来,最后还是公司强哥帮忙解决的,自己查了些资料搞明白了,希望对大家有帮助,最后感谢我强哥!

posted @ 2018-02-27 23:45  Chiliast  阅读(649)  评论(0编辑  收藏  举报