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

如何在每次push时自动将仓库部分内容拆分推送至其他独立仓库

前置配置

首先处理themes目录不推入main仓库的需求:

  • 在main仓库根目录创建.gitignore文件,添加一行/themes/,即可让git默认忽略整个themes目录下的所有内容,不会被提交到main仓库的远程分支。

优先推荐:CI/CD 流水线自动化方案

该方案支持所有团队成员推送代码到main仓库时自动触发拆分流程,无需人工操作,适配所有主流代码托管平台(GitHub/GitLab/Gitee等),以下以GitHub Actions为例说明配置逻辑:

  1. 为main仓库配置有权限推送主题独立仓库的访问令牌:在main仓库的设置页找到密钥配置区,新增名为THEME_REPO_TOKEN的密钥,值为你账号的个人访问令牌,确保令牌拥有仓库读写权限。
  2. 在main仓库根目录新建.github/workflows/split-themes.yml工作流配置文件,内容参考如下:
name: Split themes to independent repos
on:
  push:
    branches: [ main ]

jobs:
  split:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Split theme-1 to main-theme-1
        uses: splitsh-lite/github-action@v1
        with:
          prefix: themes/theme-1
          target: https://${{ secrets.THEME_REPO_TOKEN }}@github.com/你的账号名/main-theme-1.git
          target-branch: main

      - name: Split theme-2 to main-theme-2
        uses: splitsh-lite/github-action@v1
        with:
          prefix: themes/theme-2
          target: https://${{ secrets.THEME_REPO_TOKEN }}@github.com/你的账号名/main-theme-2.git
          target-branch: main

以上配置会在每次代码推送到main分支时自动执行,将对应主题目录的内容完整推送到独立仓库,还可保留所有提交历史。如果不需要保留提交历史,可以把拆分步骤替换为目录复制、新建提交推送的简单脚本,执行效率更高。

其他代码托管平台的配置逻辑完全一致,只需要将工作流语法替换为对应平台的格式即可。

备选:本地Git钩子方案

如果你不想依赖云端CI服务,也可以配置本地pre-push钩子实现自动拆分:

  1. 进入main仓库的.git/hooks目录,新建pre-push文件并赋予可执行权限,内容参考:
#!/bin/bash
for theme_path in themes/*/; do
  theme_name=$(basename "$theme_path")
  target_repo="git@github.com:你的账号名/main-${theme_name}.git"
  git subtree push --prefix="$theme_path" "$target_repo" main
done
exit 0

该方案会在你本地执行git push操作前自动触发拆分推送,仅对配置了钩子的本地设备生效,适合单人开发场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:39:03