git rebase 是什么?
git rebase 是 Git 的一个命令,用来重写提交历史。
通俗说:它能把你的一系列 commit “挪到"另一个分支的最新提交之后,让历史变得整洁。
一个类比
想象你在写一本连载小说,每写完一章就保存一次(commit)。
- merge 像把两个作者的章节合在一起,保留所有人的原始保存记录
- rebase 像把一个人写的章节重新整理,按时间顺序排列,看起来像一气呵成
什么时候用 rebase?
最常见的场景:你在开发分支上做了几个 commit,期间主分支也更新了。
开发分支:A - B - C
主分支: A - D - E
你想让开发分支在最新的主分支基础上继续开发:
变成: A - D - E - B' - C'
(B’ 和 C’ 是重放后的新版本)
怎么用?
# 切换到要 rebase 的分支
git checkout feature-branch
# 把该分支的提交"挪"到主分支最新提交之后
git rebase main
rebase vs merge 的区别
| 场景 | merge | rebase |
|---|---|---|
| 合并分支 | 创建新的 merge commit | 不创建,直接重写历史 |
| 历史风格 | 保留真实时间线 | 线性整洁 |
| 适用场景 | 共享分支 | 本地开发分支 |
| 风险 | 低 | 如果 rebase 已推送的提交会出问题 |
注意事项
- 不要 rebase 已推送的公共分支 — 会扰乱其他人的工作
- 本地开发分支可以放心 rebase — 这是 rebase 的正确用法
- rebase 后 push 需要 force push — 因为历史被改写了
一句话总结
rebase 是"整理提交历史"的工具,让项目记录更清晰,但别在共享分支上使用。
你的团队还在用 merge 还是 rebase?