子模块(Submodules)

大型项目都是按照子模块开发,子模块又是单独git管理,如果分成多个仓库合并的时候又很麻烦,放一个仓库又会频繁提交冲突,子模块命令就很好解决这个问题,多个git子模块仓库管理,统一组成项目仓库

Git命令

Init

git submodule add <repository> <path> 添加子模块

git submodule init 初始化子模块

Clone

递归方式克隆整个项目,会克隆所有子模块

git clone <repository> --recursive

如果项目已存克隆,可以执行初始化子模块

git submodule update --init

Update

当项目执行git pull并不会自动同步更新子模块,需要更新所有子模块,保持与项目子模块commit id一致

git submodule update

更新所有子模块,保持与项目远端同步

git submodule update --remote

更新指定子模块,保持与项目远端同步

git submodule update --remote module/<ModuleName>

Foreach

git submodule foreach '<command>'

可以遍历所有子模块执行git指令

举例:清除和重置每个子模块

git submodule foreach 'git reset --hard; git clean -xfd'

Diff

查看子模块本地改动

git diff --submodule