You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过GitHub Workflows实现子模块推送时触发主仓库推送

子模块推送后自动更新主仓库的GitHub Workflows实现方案

当你推送子模块代码后,要让主仓库自动更新子模块的引用并完成推送,需要分两步配置两个仓库的Workflow:

1. 子模块仓库:推送时触发主仓库的更新事件

在子模块仓库的.github/workflows目录下创建trigger-main-update.yml文件,配置推送触发事件,向主仓库发送更新信号:

name: 触发主仓库更新子模块
on:
  push:
    branches: [ main ] # 替换成你要监听的子模块分支

jobs:
  trigger-update:
    runs-on: ubuntu-latest
    steps:
      - name: 向主仓库发送更新事件
        uses: peter-evans/repository-dispatch@v2
        with:
          token: ${{ secrets.PAT_WITH_REPO_ACCESS }}
          repository: 你的用户名/主仓库名称
          event-type: submodule-updated
          client-payload: '{"submodule_sha": "${{ github.sha }}"}'

关键说明

  • PAT_WITH_REPO_ACCESS是拥有主仓库和子仓库repo权限的个人访问令牌,需要存在子仓库的Secrets中。
  • repository字段要替换成你的主仓库完整路径(比如octocat/my-main-repo)。

2. 主仓库:接收事件并更新子模块引用

在主仓库的.github/workflows目录下创建update-submodule.yml文件,监听来自子模块的更新事件,执行拉取子模块最新代码、提交并推送的操作:

name: 更新子模块引用
on:
  repository_dispatch:
    types: [submodule-updated]

jobs:
  update-submodule:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取主仓库代码
        uses: actions/checkout@v4
        with:
          submodules: true
          token: ${{ secrets.PAT_WITH_REPO_ACCESS }} # 用于推送主仓库变更

      - name: 更新子模块到最新提交
        run: |
          git submodule update --remote 你的子模块相对路径 # 替换成实际子模块路径
          git config user.name "GitHub Actions"
          git config user.email "actions@github.com"
          git add 你的子模块相对路径
          git commit -m "更新子模块至提交 ${{ github.event.client_payload.submodule_sha }}" || echo "无变更需要提交"

      - name: 推送主仓库变更
        run: git push origin main
        if: success()

额外注意事项

  • 如果子模块使用特定分支而非默认分支,需要在git submodule update --remote后加上--checkout参数,确保切换到对应分支的最新提交:git submodule update --remote --checkout 你的子模块路径。
  • 若主仓库存在子模块引用的本地修改,Workflow可能会因冲突失败,建议团队内约定子模块更新流程,或在Workflow中添加冲突处理(比如先拉取最新主仓库代码再更新)。
  • 可以根据需求调整触发分支,比如监听子模块的多个分支推送事件。

内容的提问来源于stack exchange,提问作者Ilir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:15:19