场景1:修改子模块并推送到子模块的仓库
-
进入子模块目录
cd 子模块路径 -
确保子模块在正确的分支上
git checkout master # 或目标分支注意:如果子模块处于分离头指针状态,需要先创建或切换到分支
git checkout -b 新分支名 # 或 git checkout 已有分支名 -
修改子模块文件
-
提交修改到子模块
git add . git commit -m "修改说明" -
推送子模块修改到远程仓库
git push origin master # 或目标分支
场景2:主仓库更新子模块版本
-
进入主仓库目录
cd 主仓库路径 -
更新子模块到最新版本
git submodule update --remote --merge或者进入子模块目录手动更新:
cd 子模块路径 git fetch git checkout origin/master # 或目标分支 cd .. -
提交子模块更新到主仓库
git add 子模块路径 git commit -m "更新子模块到最新版本" -
推送主仓库更新
git push
实际操作流程示例
假设您的项目结构是:
- 主仓库:
xxx-blog - 子模块:
themes/even
修改子模块并推送到子模块仓库
# 1. 进入子模块目录
cd themes/even
# 2. 确保在正确的分支上(如果是分离头指针状态)
git checkout master
# 如果出现错误,可能需要创建新分支
git checkout -b fix-branch
# 3. 修改文件
# ... 编辑文件 ...
# 4. 提交修改
git add .
git commit -m "fix: 修复模板兼容性问题"
# 5. 推送到子模块远程仓库
git push origin fix-branch # 或 master
更新主仓库中的子模块引用
# 1. 回到主仓库目录
cd /Users/eason/Desktop/Dev/guixian-blog
# 2. 提交子模块更新到主仓库
git add themes/even
git commit -m "chore: 更新 even 主题子模块"
# 3. 推送主仓库更新
git push
这样就完成了子模块的修改和主仓库的更新。