如何在Turbo管理的mono-repo中仅合并单个应用至main分支
在Turbo mono-repo中仅合并单个应用到main分支的方案
方法1:git子目录合并(精准合并目标应用目录)
这种方式可以直接指定只合并开发分支中单个应用的目录内容到main分支,适合无需改动其他文件的场景:
- 切换到main分支:
git checkout main - 执行子目录合并命令,指定目标应用所在路径(假设目标应用目录为
apps/finished-app,开发分支为dev):git merge -s subtree --no-commit dev -- apps/finished-app - 检查合并后的代码完整性,确认无冲突或异常后提交:
git commit -m "Merge finished-app from dev branch to main"
注意:如果main分支中该应用目录已有历史内容,需手动处理冲突,确保保留开发完成的版本。
方法2:临时分支剥离无关代码后合并
先从开发分支创建临时分支,移除未完成应用的代码,再合并到main分支:
- 基于开发分支创建临时分支:
git checkout -b temp-finished-app dev - 删除仓库中未完成的应用目录(比如
apps/unfinished-app1、apps/unfinished-app2):git rm -r apps/unfinished-app1 apps/unfinished-app2 git commit -m "Clean up unfinished apps for temp merge branch" - 切换到main分支:
git checkout main - 合并临时分支:
git merge temp-finished-app - 合并完成后可删除临时分支:
git branch -D temp-finished-app
方法3:cherry-pick挑选目标应用相关提交
如果目标应用的所有代码提交都是独立的(提交仅涉及该应用目录),可以直接挑选这些提交合并到main:
- 筛选出所有仅修改目标应用目录的提交记录:
git log --oneline -- apps/finished-app - 复制这些提交的哈希值,切换到main分支:
git checkout main - 逐个挑选提交合并:
git cherry-pick <提交哈希1> <提交哈希2> - 若遇到冲突,解决后执行
git cherry-pick --continue继续合并流程
内容的提问来源于stack exchange,提问作者prawito hudoro
相关产品推荐
相关产品推荐

