git 子仓库(submodule)操作

1、在主仓库添加子仓库:

        直接在主仓库路径下clone子仓库代码,如我的主仓库是test_git_master,clone到src/perception路径,clone完用git status查看,会提示有修改:

        此时如果执行git add .  命令,会提示我们这修改和submodule相关;

         将该子仓库加入主仓库:

git init   #初始化一个git 本地仓库

git submodule  add  <sub_git_url>  相对路径    # <sub_git_url> :子仓库git地址   相对路径:子仓库.git相对于当前的路径, 
#如我的是git submodule add http://192.168.1.000:8081/zhangsan/test_git.git src/perception/test_git

git commit -m "commit msg"

git push 

         此时再刷新gitlab网站,能看到子仓库已经被添加进去了

2、在主仓库里的子仓库进行修改并提交

        在子仓库做一些修改,然后提交到子仓库,并在主仓库进行更新,子仓库有自己的工作区和.git目录,首先需要提交、推送子模块的更改:

cd path/to/submodule # 此处cd到子仓库目录下
git add .
git commit -m "msg"
git push

        然后主仓库来跟踪更新:

cd /main_project  #我的是test_git_master
git add path/to/submodule      #比如git add src/perception/test_git
git commit -m "msg"
git push

         此时刷新子仓库与主仓库gitlab网址,能发现它俩都被更新;

3、主仓库更新其他地方修改的子仓库

        也就是子仓库在其他地方被修改并push,我们的主仓库以及其中的子仓库还没反应过来;

git submodule update --init  #初始化版本
git submodule update --remote  #更新到最新版本

4、clone已经添加子仓库的主仓库

        和常规clone一样把主仓库clone下来,然后发现子仓库是空的,在主仓库目录执行:

git submodule init  

git sumodule update --remote

        这样子仓库代码就下载好了。


版权声明:本文为whuzhang16原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。