原文地址:
http://www.cnblogs.com/kym/archive/2010/08/12/1797937.html
已知项目存在master分支和test分支,master分支上有4个提交点master0,master1,master2,master3,并且test分支是由master分支迁出的分支,在master1提交点上迁出为test0。所以test分支上有提交点master0,test0,test1,test2这4个提交点。
master0(初始化后的版本)
||
v
master1===test0==>test1===>test2
||
v
master2===>master3
如图所示,其实master1和test0是同一个提交点,代码完全一致。
现需要将test分支修改(test1,test2)移至master分支上,这是就需要git rebase命令
(1)切换到master分支
git checkout master
(2)进行rebase
git rebase test
这个时候,git做了些什么呢?
(a)先将test分支的代码checkout出来,作为工作目录
(b)然后将master分支从test分支创建起的所有改变的补丁,依次打上。如果打补丁的过程没问题,rebase就搞定了
(c)如果打补丁的时候出现了问题,就会提示你处理冲突。处理好了,可以运行git rebase –continue继续直到完成
(d)如果你不想处理,你还是有两个选择,一个是放弃rebase过程(运行git rebase –abort),另一个是直接用test分支的取代当前分支的(git rebase –skip)。