如何将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-appapp/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
相关产品推荐
相关产品推荐

