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

如何合并两个按时间拆分的Git仓库以恢复连续版本控制历史?

恢复Git仓库连续版本历史的解决方案

前提条件

你需要同时拥有原仓库和新仓库的本地克隆副本,且新仓库的提交是基于原仓库文件快照之后的工作内容。


步骤1:准备本地仓库

  • 克隆原仓库到本地:
    git clone <原仓库URL> old-repo
    
  • 克隆新仓库到本地:
    git clone <新仓库URL> new-repo
    

步骤2:将新仓库提交导入原仓库并拼接历史

  1. 进入原仓库目录:
    cd old-repo
    
  2. 添加新仓库为本地远程源:
    git remote add new-origin ../new-repo
    
  3. 拉取新仓库的所有分支和提交:
    git fetch new-origin
    
  4. 找到原仓库最后一个有效历史提交的哈希值(用git log --oneline查看,记为OLD_LAST_COMMIT),然后创建新分支并将新仓库的所有提交变基到原仓库历史之后:
    git checkout -b new-history new-origin/main
    git rebase --onto OLD_LAST_COMMIT --root new-history
    

    说明:--root参数会把新仓库从初始提交开始的所有记录,全部拼接在原仓库最后一个提交的后面,确保历史连续。

步骤3:处理变基冲突

变基过程中若遇到文件冲突,Git会暂停并提示冲突文件:

  • 手动打开冲突文件,解决代码冲突(保留需要的内容,删除Git自动生成的冲突标记<<<<<<<、=======、>>>>>>>)
  • 标记冲突已解决:
    git add <冲突文件名>
    
  • 继续变基:
    git rebase --continue
    

重复上述操作,直到变基完成。

步骤4:验证并推送合并后的历史

  1. 查看合并后的连续历史:
    git log --oneline
    
    确认原仓库的历史提交后紧跟新仓库的所有提交。
  2. 将合并后的分支合并到原仓库主分支:
    git checkout main
    git merge new-history
    
  3. 强制推送到新仓库(需注意:这会覆盖新仓库的现有历史,确保团队成员提前同步,避免工作丢失):
    git push new-origin main --force
    

关于GitHub议题看板与讨论内容的恢复

GitHub的议题、看板、讨论内容是绑定在仓库实例上的,无法通过Git命令迁移。有两种处理方式:

  • 保留原GitHub仓库:将合并后的历史推送到原仓库,团队切换使用原仓库,直接保留所有关联的议题和讨论。
  • 必须使用新仓库:只能手动复制原仓库的议题、讨论内容到新仓库,GitHub无原生批量迁移工具。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:06:01