关于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
相关文章
相关标签/搜索