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

如何在多级Fork的Git项目中同步上游原始仓库的更新?

三层Git仓库同步工作流方案

无需手动对比diff拷贝代码,完全兼容你现有的工作流,操作步骤如下:

第一步:新增original远程仓库指向

你本地仓库已经绑定了两个远程:origin(你自己的repo A)、upstream(官方main repo),新增第三个远程指向上游的original仓库:

git remote add original <original-repo的HTTPS/SSH克隆地址>

配置完成后可以执行git remote -v确认所有远程地址配置正确。

第二步:同步前对齐本地分支与官方main repo

每次要合并original的更新前,先保证本地的主分支(master/main)和官方main repo的最新代码完全一致,避免产生多余冲突:

git checkout master
git pull upstream master

如果怕操作污染主分支,也可以新建一个临时同步分支操作,更加安全:

git checkout -b sync-original-$(date +%Y%m%d) upstream/master

第三步:合并original的更新

根据original的更新量选两种操作方式即可:

  • 若original更新提交量少(通常就几个提交):优先用cherry-pick保留提交历史
    1. 拉取original的最新代码到本地缓存:git fetch original
    2. 查看original所有未同步的提交:git log original/master --oneline
    3. 把需要合并的提交按顺序逐个cherry-pick到当前分支:git cherry-pick <提交哈希值>
    4. 遇到冲突解决后执行git add .,再运行git cherry-pick --continue即可完成单条提交的合并
  • 若original一次更新的提交较多,不需要保留原始提交历史:用squash合并成单条提交
    1. 拉取original最新代码:git fetch original
    2. 执行合并命令将所有差异合并到当前分支的暂存区:git merge --squash original/master
    3. 解决所有冲突后执行提交,提交信息标注清楚同步的时间范围即可,比如git commit -m "合并original repo 2024年X月X日前的所有更新"

第四步:走原有提交流程

合并完成且验证功能正常后,按你原来的工作流推送到自己的repo A,再给官方main repo提PR即可,整个操作对其他协作人员完全透明,不会影响现有开发流程。

注意事项

  • 合并冲突时优先以main repo的现有业务逻辑为准,original的更新仅作为补充
  • 同步操作建议每次只合一个时间点的original更新,不要跨多个版本合并,降低冲突处理难度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 01:36:07