Git中,rebase和merge操做都是將一個分支的更改合併到另外一個分支中,可是方式不一樣。git
舉個例子:如今有兩個分支master和feature,分別有以下提交:code
git merge feature
cdn
merge操做將會自動產生一個新的commit,記錄此次合併的提交信息,merge操做記錄了真實的commit狀況,包括每一個分支的詳情。blog
git rebase feature
開發
rebase將從主分支的最後一次提交開始添加feature分支中的全部更改。it
never use it on public branches(不要在公共分支上使用)
io
若是你想要一個乾淨的,沒有merge commit的線性歷史樹,那麼你應該選擇git rebase 若是你想保留完整的歷史記錄,而且想要避免重寫commit history的風險,你應該選擇使用git mergeast