包含子模块的仓库更新指南

68 阅读2分钟

场景1:修改子模块并推送到子模块的仓库

  1. 进入子模块目录

    cd 子模块路径
    
  2. 确保子模块在正确的分支上

    git checkout master  # 或目标分支
    

    注意:如果子模块处于分离头指针状态,需要先创建或切换到分支

    git checkout -b 新分支名  # 或 git checkout 已有分支名
    
  3. 修改子模块文件

  4. 提交修改到子模块

    git add .
    git commit -m "修改说明"
    
  5. 推送子模块修改到远程仓库

    git push origin master  # 或目标分支
    

场景2:主仓库更新子模块版本

  1. 进入主仓库目录

    cd 主仓库路径
    
  2. 更新子模块到最新版本

    git submodule update --remote --merge
    

    或者进入子模块目录手动更新:

    cd 子模块路径
    git fetch
    git checkout origin/master  # 或目标分支
    cd ..
    
  3. 提交子模块更新到主仓库

    git add 子模块路径
    git commit -m "更新子模块到最新版本"
    
  4. 推送主仓库更新

    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

这样就完成了子模块的修改和主仓库的更新。