524 字
1 分钟
Git Rebase vs Merge:团队 PR 工作流如何选才不翻车
“到底用 rebase 还是 merge”是每个团队都会争论的话题。 争论本身没意义,关键是你们的目标是什么:历史整洁、排查效率、还是风险最小化?
1. 两者本质区别
merge:保留分叉历史,新增 merge commit。rebase:重写提交基线,让历史线性化。
简单说:
- 你想看见真实开发分支轨迹,用 merge。
- 你想得到干净主线历史,用 rebase。
2. 推荐规则(可直接落地)
- 个人功能分支:允许 rebase,先整理提交再提 PR。
- 主分支(main/master):禁止 rebase 历史,只接受受控合并。
- 公共分支已被他人基于开发后,不要再强推 rebase。
3. 常见流程模板
场景 A:保持主分支线性
git checkout feature/logingit fetch origingit rebase origin/main# 解决冲突后# git rebase --continue
git push --force-with-lease然后在 GitHub 用 Squash and merge。
场景 B:保留分支语义
如果团队重视“功能分支完整上下文”,可使用 merge commit:
git checkout maingit pull origin maingit merge --no-ff feature/logingit push origin main4. 冲突处理与风险控制
最容易翻车的是“边 rebase 边改业务逻辑”。 建议:
- rebase 冲突阶段只做必要冲突消解
- 逻辑改动另起提交
- 大分支每天小步同步上游,减少一次性冲突量
5. 回滚策略
- merge 模式下可直接回滚 merge commit
- squash 模式下回滚更简单,但会丢失中间提交语义
所以你要在“历史简洁”和“历史细节”之间做取舍。
6. 一个实用团队约定
- PR 合并前:必须通过 CI
- PR 合并前:提交历史自检(去掉
fix typo等噪音提交) - 发布前:为高风险改动打 tag
总结
rebase 和 merge 没有绝对优劣,只有是否契合团队协作模型。 把规则写进团队文档并执行一致,比任何“偏好争论”都更重要。
延伸阅读
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Git Rebase vs Merge:团队 PR 工作流如何选才不翻车
https://levifree.dpdns.org/posts/git-rebase-vs-merge-pr-workflow/ 部分信息可能已经过时
相关文章 智能推荐
1
告别 git push -f:团队协作中的 Git Commit 规范指南
Git 如何写出优雅的 Commit Message?Conventional Commits 最佳实践
2
Git 冲突处理实战手册:从定位到收敛的一套标准流程
Git 告别手忙脚乱:处理 merge/rebase 冲突时的步骤、命令与风险控制
3
Git 实战:三种方法让你的 Fork 仓库与上游保持同步
Git 从点击按钮到自动化脚本:全方位掌握 Git Upstream 同步技巧
4
技术博客如何维护旧文章:用版本、验证日期和失效处理保住内容可信度
内容运营 旧教程不会自动过期,但会自动失去可信度;这套维护流程帮助你优先更新真正影响读者的页面
5
Astro 本地预览验收清单:发布前用 15 分钟发现导航、资源与交互问题
Astro 一份适用于静态博客的小型回归流程,覆盖构建诊断、关键入口、动态筛选和资源加载


