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

如何将Next.js仓库迁移至Turborepo并保留Git提交历史与分支?

最优迁移方案(完整保留提交历史与分支)

1. 调整原my-app仓库的文件路径历史

先把my-app所有提交里的文件路径统一改成app/my-app,确保合并到目标仓库后文件位置完全符合要求:

  • 进入你克隆好的my-app本地仓库目录:
    cd path/to/my-app
    
  • 用git filter-repo重写提交历史(没装的话,通过包管理器安装,比如brew install git-filter-repo或pip install git-filter-repo):
    git filter-repo --to-subdirectory-filter app/my-app
    
    这一步会把所有提交里的文件都移到app/my-app路径下,分支、标签、提交记录全部保留。

2. 把修改后的my-app关联到目标Turborepo仓库

  • 切换到目标Turborepo的root目录,先初始化git(未初始化的话执行git init):
    cd path/to/root-turborepo
    git init
    
  • 把修改后的my-app仓库设为本地临时远程:
    git remote add my-app-temp path/to/my-app
    

3. 拉取并合并所有分支与提交

  • 拉取my-app的所有分支和标签:
    git fetch my-app-temp --tags
    
  • 合并主分支(比如main)到目标仓库的主分支:
    git merge my-app-temp/main --allow-unrelated-histories
    
  • 需要保留其他分支的话,逐个创建本地分支关联远程分支:
    git checkout -b feature-xxx my-app-temp/feature-xxx
    
    重复这条命令处理所有需要保留的分支。

4. 收尾验证

  • 删除临时关联的远程仓库:
    git remote remove my-app-temp
    
  • 检查文件结构和提交历史:
    ls app/my-app  # 确认文件都在正确位置
    git log --oneline  # 查看合并后的完整提交记录
    
  • 把Turborepo的初始文件(packages/、turbo.json这些)提交上去:
    git add .
    git commit -m "初始化Turborepo结构,完成my-app迁移"
    

注意点

  • git filter-repo会重写历史,建议先备份原my-app仓库再操作。
  • 如果目标仓库已经绑定远程服务器,合并完直接推全部分支和标签:git push origin --all、git push origin --tags

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:40:36