首選區別這兩個操作:
git pull = git fetch + git merge FETCH_HEAD git pull --rebase = git fetch + git rebase FETCH_HEAD現在來看看git merge和git rebase的區別:
77(master) / A \ 88(master)git pull
$ git pull$ git add . // 發生衝突並解決後執行 add 和 commit,無衝突跳過。$ git commit -m '解決衝突'$ git push77(master) / A---B---C---D---G origin(master) \ / \ E--F 88(master)git pull --rebase
$ git pull --rebase$ git add . // 發生衝突並解決後執行 add 和 rebase,無衝突跳過。$ git rebase --continue77(master) / A---B---C---D---E'---F' origin(master) \ 88(master)在rebase的過程中,有時也會有conflict。這時Git會停止rebase並讓用戶去解決衝突。解決完衝突後用git add .命令去更新這些內容,然後不用執行git-commit,直接執行git rebase --continue,這樣git會繼續apply餘下的補丁。
git rebase --abort
執行之後,本地內容會回到提交之間的狀態,也就是回到以前提交但沒有git-pull時的狀態,簡單來說就是撤銷rebase。
git rebase --skip
執行之後,引起衝突的git-commit(s)會被丟棄。因此,在使用skip時請慎重。