1. 基础操作
1.1 更新子模块
# 初始化并更新所有子模块
git submodule update --init --recursive
# 更新特定子模块
git submodule update --init -- path/to/submodule
2. 分支管理
2.1 合并分支
# 进入子模块目录
cd path/to/submodule
# 确保在master分支
git checkout master
# 合并其他分支
git merge branch_name
# 返回主仓库
cd ../../
2.2 批量操作子模块
# 批量查看子模块状态
git submodule foreach git status
# 批量切换到master分支
git submodule foreach git checkout master
# 批量拉取最新代码
git submodule foreach git pull origin master
3. 标签管理
3.1 批量打标签
# 为所有子模块打标签
git submodule foreach git tag v1.0.0
# 查看所有子模块的标签
git submodule foreach git tag
# 推送所有子模块的标签
git submodule foreach git push --tags
3.2 单个子模块标签管理
# 进入特定子模块
cd path/to/submodule
# 创建标签
git tag v1.0.0
# 推送标签
git push origin v1.0.0
# 返回主仓库
cd ../../
# 更新子模块引用
git submodule update --init --recursive
# 检查子模块状态
git status
4. 提交更新
4.1 更新子模块引用
# 检查子模块状态
git status
# 如果看到子模块有更新,添加更改
git add path/to/submodule
# 提交更改
git commit -m "Update submodule reference"
# 推送到远程仓库
git push origin master
5. 最佳实践
5.1 子模块管理建议
- 始终保持子模块在正确的分支上
- 定期更新子模块引用
- 谨慎处理子模块的版本变更
- 在主仓库中记录子模块的重要变更
5.2 工作流程
# 1. 更新所有子模块
git submodule update --init --recursive
# 2. 确保子模块在正确分支
git submodule foreach git checkout master
# 3. 进行必要的更改
cd path/to/submodule
git add .
git commit -m "Make changes"
git push origin master
cd ../../
# 4. 更新主仓库中的子模块引用
git add path/to/submodule
git commit -m "Update submodule reference"
git push origin master
5.3 常见问题解决
# 子模块处于分离HEAD状态
cd path/to/submodule
git checkout master
# 子模块更新失败
git submodule deinit path/to/submodule
git submodule update --init path/to/submodule
# 重置子模块
git submodule deinit -f path/to/submodule
git submodule update --init --recursive
6. 注意事项
- 确保团队成员了解子模块的工作机制
- 保持子模块的版本一致性
- 谨慎处理子模块的分支切换
- 定期清理不需要的标签
- 做好子模块变更的文档记录