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

Git操作:如何定期将repo1改动合并到保留自身修改的repo2中?

Git跨仓库同步方案

冲突原因说明

你之前的操作属于将两个历史分叉过大的分支强行合并,且拉取方向错误(将repo2的分支合并到repo1的本地分支上),Git无法正确追溯两个分支的共同变更基准,因此会触发单侧修改文件也报冲突的问题。

首次同步配置

  • 克隆repo2到本地:
    git clone git@github.com:vikasgope/project2.git
  • 进入项目目录后,添加repo1作为上游远程源:
    git remote add repo1-upstream git@github.com:vikasgope/project1.git
  • 验证配置:
    git remote -v

    输出结果中能看到origin对应repo2地址、repo1-upstream对应repo1地址即为配置成功

定期同步操作步骤

方案1:rebase模式(推荐,历史清晰冲突少)

适用于repo2维护者少、团队约定使用线性提交历史的场景:

  1. 切换到repo2的主分支(根据实际分支名替换master为main等):
    git checkout master
  2. 拉取repo2的最新提交,保证本地分支和远程一致:
    git pull origin master
  3. 拉取repo1的所有最新提交:
    git fetch repo1-upstream
  4. 执行变基操作,将repo2的所有提交放到repo1最新提交之后重放:
    git rebase repo1-upstream/master

    该操作只会在两个仓库同时修改了同一代码块时才会触发冲突,不会出现单侧修改文件冲突的问题

  5. 若遇到冲突,修改冲突文件后执行git add <冲突文件路径>,再执行git rebase --continue直到所有提交重放完成;若需要终止同步回到操作前状态,执行git rebase --abort
  6. 同步完成后推送到repo2远程仓库:
    git push origin master -f

    强制推送前需确认所有repo2开发者已提交本地修改,推送后通知所有成员执行git pull --rebase拉取最新代码,避免本地历史分叉

方案2:merge模式(适合多人协作无rebase约定的场景)

不需要强制推送,不会影响其他成员本地操作:

  1. 完成和方案1相同的前3步操作
  2. 执行合并操作:
    git merge repo1-upstream/master
  3. 按提示解决冲突后,执行git add <冲突文件路径>,再执行git commit完成合并提交
  4. 直接推送到远程即可:
    git push origin master

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:24:04