rebase与merge的区别

git rebase 和 git merge 一样都是用于从一个分支获取并且合并到当前分支

假设一个场景,就是我们开发的 [feature/todo] 分支要合并到 master 主分***么用 rebase 或者 merge 有什么不同呢?

一、merge

图片说明

(1)特点:自动创建一个新的 commit,如果合并的时候遇到冲突,仅需要修改后重新commit

(2) 优点:记录了真实的commit 情况,包括每个分支的详情

(3) 缺点:因为每次 merge 会自动产生一个merge commit,所以在使用一些git 的GUI tools,特别是commit 比较频繁时,看到分支很杂乱。

二、rebase

图片说明

(1)特点:会合并之前的 commit 历史

(2)优点:得到更简洁的项目历史,去掉了 merge commit

(3) 缺点:如果合并出现代码问题不容易定位,因为 re-write 了history

三、总结

因此,当需要保留详细的合并信息的时候建议使用 git merge,特别是需要将分支合并进入 master 分支时;当发现自己修改某个功能时,频繁进行了 git commit 提交时,发现其实过多的提交信息没有必要时,可以尝试 git rebase。