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

如何合并两个Git仓库的连续提交历史?A含2021年末前、B含2022年初后记录

合并两个Git仓库为连贯提交历史的操作方法

操作思路

你的两个仓库属于同一项目的前后阶段历史,repo A的最终状态就是repo B的初始状态,最佳方案是将repo B的提交变基到repo A的历史末尾,这样能得到完全线性、连贯的提交历史,既不会产生无意义的合并提交,也不会引入多余文件。

具体步骤

  1. 先确认本地的repo A和repo B都处于干净状态(无未提交修改),可以用git status检查。
  2. 进入repo A的本地目录,把repo B添加为远程仓库:
    git remote add repo-b /path/to/local/repo-b  # 填本地路径或远程仓库URL都可
    
  3. 拉取repo B的main分支到repo A本地:
    git fetch repo-b main
    
  4. 切换到拉取的repo B分支,执行变基操作,目标是repo A的main分支末尾:
    git checkout repo-b/main
    git rebase main
    

    注:如果变基时出现冲突,按Git提示解决冲突后,执行git rebase --continue即可。由于两个仓库是连贯历史,冲突概率极低。

  5. 验证结果:
    • 用git log --oneline查看提交历史,确认是repo A的历史后直接衔接repo B的所有提交,无额外合并节点。
    • 用git diff main..HEAD对比变基后的分支与repo A的main分支,确认只有repo B中的更改,无多余文件。
  6. (可选)验证无误后,将变基后的分支合并到repo A的main分支(此为快进合并,不会产生合并提交):
    git checkout main
    git merge repo-b/main
    
  7. 最后可将合并后的main分支推送到目标远程仓库(若需要)。

关于“旧文件”的疑问解答

变基只是将repo B的提交重放到repo A的历史末尾,而repo B的初始状态本身就是repo A的最终状态,所以repo B的提交只会包含2022年1月1日起的更改,不会引入repo A中已存在但repo B未修改的旧文件。如果repo B中删除了某些旧文件,变基后这些删除操作也会正确应用到历史中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 16:23:24