区别
| 特性 | Merge | Rebase |
|---|---|---|
| 历史记录 | 保留所有分支历史,生成合并提交 | 改写历史,线性化提交 |
| 提交树 | 保留分支结构,可能复杂 | 线性历史,简洁 |
| 冲突处理 | 一次性解决合并冲突 | 可能多次解决(每个提交) |
| 适用场景 | 团队协作,公开分支 | 个人分支整理,追求干净历史 |
效果
merge
A --- B --- C (main)
\
D --- E (feature)
合并后:
A --- B --- C --- F (main, F 是合并提交)
\ /
D --- E (feature)

rebase
A --- B --- C (main)
\
D --- E (feature)
Rebase 后:
A --- B --- C --- D' --- E' (main)

使用建议
- 公司项目:一般推荐使用
git merge,可以看到完整的 git 提交历史,即使提交历史会比较乱。具体看公司要求。 - 个人项目:不想麻烦,直接使用
git merge也可以,追求提交历史简洁使用git rebase。
tips
- 无论是 merge 还是 rebase,都不会改变代码修改人,都可以在 idea 里面看到代码的作者是谁。只不过 rebase 会改变提交历史。
- 比如张三从 master 拉了 dev 分支,开发完重新合并到 master 分支。
- 通过 merge 你可以看到张三从 master 拉了 dev 分支,然后又合并到了 master 分支。而 rebase 后,你无法看到从 master 拉了 dev 分支,然后又合并到了 master 分支。rebase 后,提交历史会变成一条直线,看着比较整洁。