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

如何同步复刻仓库并更新其在主仓库中的子树内容?

解决方案

无法直接在仓库C中完成「同步仓库B与上游A」的操作,因为C中的子树只是仓库B内容的副本,并非B仓库本身。你需要先同步B与A的内容,再更新C中的子树,以下是两种可行方案:

方案一:常规流程(推荐,保持仓库层级清晰)

  • 切换到本地仓库B的目录
  • 若未添加仓库A为上游远程,先执行:
    git remote add upstream {RepositoryARemoteURL}
    
  • 拉取仓库A的master分支更新并合并到B:
    git pull upstream master --squash
    
  • 提交合并后的变更并推送到仓库B的远程:
    git commit -m "Sync changes from upstream repository A"
    git push origin master
    
  • 回到仓库C的目录,执行原有的subtree拉取命令更新子树:
    git subtree pull --prefix={SubdirectoryForRepositoryC} {RepositoryBRemoteName} master --squash
    

方案二:直接在C中合并A的变更(跳过B的手动同步,需谨慎)

如果不想单独操作仓库B,可以直接在C中将A的更新合并到子树,但这样会让C的子树内容先于B更新,之后需要手动同步B才能保持一致:

  • 在仓库C中添加仓库A的远程:
    git remote add upstream-A {RepositoryARemoteURL}
    
  • 拉取A的master分支更新到C的子树目录:
    git subtree pull --prefix={SubdirectoryForRepositoryC} upstream-A master --squash
    
  • (可选)将C中子树的更新推回仓库B,保持B与C同步:
    git subtree push --prefix={SubdirectoryForRepositoryC} {RepositoryBRemoteName} master
    

注意:方案二会绕过仓库B作为中间层的流程,若你的工作流依赖B的审核/修改环节,建议优先使用方案一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 00:20:30