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

如何在GitHub中实现Repo B指定文件向Repo A的同步?

如何将Repo B的文件同步到Repo A并保持自动更新?

作为GitHub新手,要实现把Repo B的文件复制到Repo A还持续同步,其实有两种实用的方法,我给你一步步拆解清楚:

方法一:用Git子模块(保留仓库关联,手动触发更新)

这种方法适合你需要保留两个仓库之间的关联,能随时追踪Repo B变更的场景:

  • 第一步:先把Repo A克隆到本地
    打开终端,执行命令:
    git clone https://github.com/你的用户名/RepoA.git
    cd RepoA
    
  • 第二步:添加Repo B作为子模块
    执行命令把Repo B关联到Repo A的指定目录(比如你想把Repo B的文件放在Repo A的repo-b-files文件夹里):
    git submodule add https://github.com/你的用户名/RepoB.git repo-b-files
    
    执行完后,Repo B的所有文件就会出现在repo-b-files目录下了。
  • 第三步:提交并推送到GitHub
    把子模块的配置文件和新增的目录提交到Repo A:
    git add .gitmodules repo-b-files
    git commit -m "添加Repo B作为子模块"
    git push
    
  • 第四步:后续更新Repo B的内容
    当Repo B有更新时,进入子模块目录拉取最新代码,再同步到Repo A:
    cd repo-b-files
    git pull origin main  # 这里的main是Repo B的主分支,如果是其他分支就改成对应的名字
    cd ..
    git add repo-b-files
    git commit -m "同步Repo B的最新内容"
    git push
    

小提示: 其他人克隆你的Repo A时,需要加上--recurse-submodules参数才能同时拉取子模块内容:

git clone --recurse-submodules https://github.com/你的用户名/RepoA.git

如果已经克隆了,也可以执行git submodule update --init --recursive来拉取子模块。

方法二:用GitHub Actions(自动同步,无需手动操作)

如果你想实现“一劳永逸”的自动同步,比如每天自动把Repo B的最新文件同步到Repo A,那GitHub Actions是最佳选择:

  • 第一步:在Repo A中创建工作流
    打开Repo A的GitHub页面,点击顶部的Actions标签,然后点击New workflow,选择set up a workflow yourself。
  • 第二步:编写同步工作流代码
    把页面里默认的YAML代码替换成下面的内容,记得替换其中的你的用户名、RepoB、分支名(比如main)以及你想要存放文件的目录(比如repo-b-files):
    name: Sync Repo B to Repo A
    
    on:
      schedule:
        # 每天凌晨1点自动同步,你可以修改Cron表达式调整时间
        - cron: '0 1 * * *'
      workflow_dispatch: # 允许手动触发同步(在Actions页面点Run workflow就行)
    
    jobs:
      sync:
        runs-on: ubuntu-latest
        steps:
          - name: 拉取Repo A代码
            uses: actions/checkout@v4
            with:
              persist-credentials: false
    
          - name: 拉取Repo B代码到临时目录
            uses: actions/checkout@v4
            with:
              repository: 你的用户名/RepoB
              path: repo-b-temp
              persist-credentials: false
    
          - name: 复制Repo B的文件到Repo A
            run: |
              # 创建存放文件的目录(如果不存在的话)
              mkdir -p repo-b-files
              # 复制Repo B的所有文件到目标目录,不想复制.git的话可以加rm -rf repo-b-files/.git
              cp -r repo-b-temp/* repo-b-files/
    
          - name: 提交并推送同步后的内容
            uses: ad-m/github-push-action@master
            with:
              branch: main # Repo A的主分支
              github_token: ${{ secrets.GITHUB_TOKEN }}
              message: "Auto sync from Repo B at $(date +'%Y-%m-%d %H:%M:%S')"
    
  • 第三步:保存工作流
    点击页面下方的Start commit,输入一个提交信息(比如添加自动同步Repo B的工作流),然后提交即可。

小提示: 如果Repo B是私有仓库,你需要生成一个带repo权限的Personal Access Token(PAT),然后在Repo A的Settings -> Secrets and variables -> Actions里添加一个名为REPO_B_TOKEN的密钥。之后在工作流的拉取Repo B代码步骤里加上token: ${{ secrets.REPO_B_TOKEN }},并把github_token换成${{ secrets.REPO_B_TOKEN }},这样才能有权限访问私有仓库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:12:24