相同点
- 都是用来合并分支,将不同分支的代码融合在一起
不同点
生成的代码树不同
merge 生成的代码树记录了所有的历史操作过程
rebase 生成的代码树是一条直线,通过对目标分支进行 “嫁接”,把新提交的 commit 代码添加到源分支的最后
处理冲突的方式
- merge 命令合并分支,只需解决一次冲突,但是会产生一个新的 commit
- rebase 命令合并分支,解决完冲突,执行 git add .和 git rebase –continue,不会产生额外的 commit,但是需要重复处理多次冲突。
附录
使用建议
当满足以下条件时:
- 能够定期 rebase(避免 rebase 时出现大量冲突需要解决)
- 开发的分支只是自己使用(避免其他人拉去代码时本地产生冲突)
- 非基础公共分支
使用 rebase,其它使用 merge
基本使用
1 | git rebase [source] [target] |
小技巧
如果你不熟悉 git rebase,可以随时在临时分支中执行 rebase。