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 也將會很是困難。調試