使用下面的關系差別這兩個操作:
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
現在來看看git merge和git rebase的差別。
假設有3次送出A,B,C。

在遠端分支origin的基礎上建立一個名為"mywork"的分支并送出了,同時有其他人在"origin"上做了一些修改并送出了。
其實這個時候E不應該送出,因為送出後會發生沖突。如何解決這些沖突呢?有以下兩種方法:
1、git merge
用git pull指令把"origin"分支上的修改pull下來與本地送出合并(merge)成版本M,但這樣會形成圖中的菱形,讓人很困惑。
2、git rebase
建立一個新的送出R,R的檔案内容和上面M的一樣,但我們将E送出廢除,當它不存在(圖中用虛線表示)。由于這種删除,小李不應該push其他的repository.rebase的好處是避免了菱形的産生,保持送出曲線為直線,讓大家易于了解。
在rebase的過程中,有時也會有conflict,這時Git會停止rebase并讓使用者去解決沖突,解決完沖突後,用git add指令去更新這些内容,然後不用執行git-commit,直接執行git rebase --continue,這樣git會繼續apply餘下的更新檔。
在任何時候,都可以用git rebase --abort參數來終止rebase的行動,并且mywork分支會回到rebase開始前的狀态。
*************** 當你發現自己的才華撐不起野心時,就請安靜下來學習吧!***************