關於git rebase和git merge

最近在研究git rebase和git merge的用法,發現其實也挺簡單的。(T_T人家還研究了很久…
git merge 應該你們都比較熟悉,就是把branch merge進來;

git rebase 的意思其實也是蠻簡單的,就是rebase嘛~也就是說把我這個branch的根基換一下的意思,有點像嫁接。
網上一直流傳的三張圖,很經典,可是最初卻被我誤解了: html

before merge/rebase: git

A <- B <- C    [master]
^
 \
  D <- E       [branch]

after git merge master: ruby

A <- B <- C
^         ^
 \         \
  D <- E <- F

after git rebase master: fetch

A <- B <- C <- D' <- E'

(A, B, C, D, E and F are commits) code

其實,這裏rebase的線性,是指在當前branch上是線性的,其中帶'(撇號)的commit並無被同步到master上,仍然在branch上。
下面的圖更好一點:
D'--E' topic
             /
    A---B---C master


另外兩個相關的命令是: git pull和 git pull --rebase。
這兩個的區別在於前者是git fetch + git merge,後者是git fetch + git rebase。
推薦地址:
http://ruby-china.org/topics/112
https://www.kernel.org/pub/software/scm/git/docs/git-rebase.html
http://stackoverflow.com/questions/804115/git-rebase-vs-git-merge
相關文章
相關標籤/搜索