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

如何将两个独立Git仓库合并为含Backend/Frontend结构的单一仓库?

合并两个独立Git仓库并保留提交记录的方法

要实现将两个独立仓库合并为一个大仓库,同时保留双方所有提交记录,且最终仅展示对应文件夹结构,你需要通过重写子仓库提交历史再合并的方式操作,具体步骤如下:

1. 准备临时仓库并重写提交历史

处理后端仓库

  • 克隆后端仓库到本地临时目录(若已有本地仓库可跳过克隆):
    git clone <你的后端仓库地址> backend-temp
    cd backend-temp
    
  • 使用git filter-repo重写所有提交,将所有文件迁移到backend目录下(该工具是Git官方推荐的历史重写工具,替代已废弃的filter-branch):
    git filter-repo --to-subdirectory-filter backend
    

处理前端仓库

  • 返回上级目录,重复类似操作处理前端仓库:
    cd ..
    git clone <你的前端仓库地址> frontend-temp
    cd frontend-temp
    git filter-repo --to-subdirectory-filter frontend
    

2. 创建并初始化大仓库

  • 创建大仓库目录并初始化Git:
    cd ..
    mkdir BigProjectOnGithub
    cd BigProjectOnGithub
    git init
    

3. 合并处理后的两个仓库

合并后端仓库

  • 将处理后的后端临时仓库作为远程仓库添加,拉取并合并其提交:
    git remote add backend ../backend-temp
    git fetch backend
    # 替换main为你的后端仓库默认分支(如master)
    git merge backend/main --allow-unrelated-histories
    

合并前端仓库

  • 同样合并前端仓库的提交:
    git remote add frontend ../frontend-temp
    git fetch frontend
    # 替换main为你的前端仓库默认分支(如master)
    git merge frontend/main --allow-unrelated-histories
    

4. 清理并推送到GitHub

  • 删除临时远程仓库引用:
    git remote remove backend
    git remote remove frontend
    
  • 添加GitHub远程仓库并推送:
    git remote add origin <你的GitHub大仓库地址>
    git push -u origin main
    

为什么直接复制文件无效?

你之前直接复制文件的方式,只会将两个项目的当前文件状态作为一个新提交添加到大仓库,完全丢失了原有仓库的200+条提交记录。而通过git filter-repo重写历史,会将每个提交中的文件路径统一修改为对应子目录,合并后所有历史记录都会被保留,Git日志能完整展示两个仓库的提交轨迹,最终推送到GitHub后也只会显示backend和frontend两个文件夹,无额外仓库引用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:46:14