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

如何将克隆仓库合并至Fork仓库并保留提交历史?

可行!手把手教你合并并保留提交历史

当然可以实现将repo1的提交历史完整合并到repo2的需求,大概率你之前失败是因为没处理「无关联历史仓库」的合并限制。下面是详细的操作步骤和问题解决方法:

操作步骤

  1. 本地准备工作
    先把你的repo2克隆到本地,进入仓库目录:

    git clone https://github.com/Stophface/react-native-maps.git
    cd react-native-maps
    
  2. 添加repo1作为远程源
    把repo1添加为本地仓库的一个远程源,方便拉取它的所有提交历史:

    git remote add repo1 https://github.com/Stophface/react-native-maps-0.20.1.git
    

    你可以用git remote -v确认远程源是否添加成功。

  3. 拉取repo1的所有提交
    拉取repo1的全部分支和提交历史到本地:

    git fetch repo1
    
  4. 执行合并(关键步骤)
    切换到repo2的主分支(假设是main,如果是旧仓库可能是master),然后执行合并命令:

    git checkout main
    git merge repo1/main --allow-unrelated-histories
    

    这里的--allow-unrelated-histories是核心:因为repo1和repo2最初是两个独立的仓库(一个是克隆旧版本,一个是Fork官方仓库),Git默认会阻止无关联历史的合并,加上这个参数就能绕过限制,同时完整保留两边的提交历史。

  5. 处理冲突(如果有)
    合并过程中大概率会遇到代码冲突,Git会在终端提示冲突的文件。你需要:

    • 打开冲突文件,手动修改冲突部分(Git会用<<<<<<<、=======、>>>>>>>标记冲突区域)
    • 标记冲突已解决:git add <冲突文件名>
    • 完成合并提交:git commit(Git会自动生成合并提交信息,你也可以自定义)
  6. 推送到repo2
    最后把合并后的分支推送到远程的repo2:

    git push origin main
    

常见问题排查

如果你之前合并失败,可能是这几个原因:

  • 没加--allow-unrelated-histories参数,导致Git拒绝合并无关联历史
  • 合并的分支不对(比如repo1的主分支不是main,可以用git branch -a查看远程分支)
  • 冲突处理不当,导致合并提交失败

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:22:52