Git submodule

git submodule 是git系统中非常实用的一个功能,对于可复用模块非常有用。

一、使用命令

1.1 首次拉取带子仓库命令

git clone --recurse-submodules 父仓库地址

分开拉取

git clone // 克隆父仓库地址,无法下载到子模块信息
git clone --recursiv // 克隆父仓库地址,并下载到子模块信息

git submodule init // 初始化子模块
git submodule update // 更新子模块与主仓库中的子模块代码同步
// or
git submodule update --init
// or 嵌套的(子仓库中包含子仓库)
git submodule update --init --recursive

1.2 更新、拉取子仓库代码命令

父目录中:

git submodule update // 与主仓库中的子模块代码同步
git submodule update --remote // 与子仓库中代码同步(同步所有的子模块)
git submodule update --remote xxx // 指定需要同步的子模块

子模块目录下更新:

git pull

默认情况下会跟踪子模块的 master 分支,设置为其他分支:

git config -f .gitmodules submodule.[submodule-name].branch [branch-name]

二、git submodule 相关说明

2.1 git submodule init

修改当前项目的.git/config文件


image.png

2.2 git submodule update

拉取子模块远程仓库的内容并更新子模块的git信息 .git/modules

git submodule update --init --recursive

git submodule update --init --recursive是一个用于初始化并更新 Git 子模块的命令,其中包含了三个参数:
update:
这个参数告诉 Git 更新子模块。 如果不指定此参数,Git 将不会更新子模块,而只是确保它们处于正确的提交状态。
--init:
这个参数告诉 Git 初始化尚未初始化的子模块。如果你的仓库包含子模块,并且有些子模块尚未被初始化(通常是因为它们是在一个最新的版本中添加的),那么使用这个参数将初始化这些子模块。
--recursive:
这个参数告诉 Git 递归地初始化和更新所有的子模块。如果子模块本身包含了其他子模块,那么使用这个参数将确保所有子模块都被正确初始化和更新。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • git 的 submodule 作为一个独立的 repo, 其拥有普通 repo 全部的功能, 我们可以完全按照普...
    闪耀旅途阅读 1,481评论 0 0
  • 使用场景 当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去...
    梅_梅阅读 382评论 0 1
  • 写在前面: 1、使用Git Submodule可能遇到的坑(http://blog.devtang.com/201...
    Funnyer阅读 5,908评论 0 0
  • 合作开发,不得不使用git来进行项目管理,下面来记录下关于git的踩坑记录。 子模块概念 对于一些比较大的工程,为...
    Super超人阅读 3,699评论 0 4
  • 使用场景 拆分项目,当项目越来越大之后,我们希望 子模块 可以单独管理,并由 专门 的人去维护,这个时候只可以使用...
    zucchiniy阅读 479评论 0 0