Rebase 和 merge 都被设计用来将变动从一个分支整合到另外一个分支,可是它们的实现方式却不一样。html
下面假如咱们有以下提交,merge 会将两个分支的代码合并,而 rebase 会将 feature 分支上全部的变动在 master 分支上从新应用一遍:git
git bisect
调试将变得困难Rebase 不适合与 pull requests
同时工做,由于你看不出来哪里是别人作的变动。重写了历史记录也不利于团队协做spa
你在使用 rebase 时也应该更加当心
Rebase 能够用来精简一个复杂的历史记录,经过交互式 rebase,你能够去掉不想要的 commit,合并多个 commit 甚至修改 commit 信息。设计
须要注意的是,因为 rebase 是将 commit 一个一个应用到目标分支,因此在产生冲突时,须要针对 commit 一个一个去解决,而 merge 是将 commit 的最终结果合并到目标分支,因此冲突只须要解决一次便可。而若是有不少冲突的话,撤销一个 rebase 也将会很是困难。调试