git rebase

衍合,作用和merge类似,都是处理2个分支的变化,将一个分支的变化同步到另一个分支

样例

首先我们在master的基础上新建2个分支

hui.qian@HUIQIANPC /e/testerhome/AndroidTestScrpits (dev)
$ git branch
* dev
  doctorq
  master

在dev分支中做一些修改,提交为c2:

$ git log
commit 53259af32d375efd2ef0824bedf884f414f103ff
Author: unknown <hui.qian@HuiQianPC.spreadtrum.com>
Date:   Wed Mar 4 15:33:32 2015 +0800

    c2

在doctorq分支中做一些修改,提交为c1:

hui.qian@HUIQIANPC /e/testerhome/AndroidTestScrpits (doctorq)
$ git log
commit a775d3768c3dbde939e782769dab141d3998ef48
Author: unknown <hui.qian@HuiQianPC.spreadtrum.com>
Date:   Wed Mar 4 15:32:57 2015 +0800

    c1

目前的状况就是我们在master分支的基础上创建了2个分支,一个doctorq分支,目前处于c1状态,一个dev分支,目前处于c2状态。
我们如何使用git rebase来将doctorq分支的更新衍合到dev中。

$ git checkout dev
Switched to branch 'dev'

hui.qian@HUIQIANPC /e/testerhome/AndroidTestScrpits (dev)
$ git rebase doctorq
First, rewinding head to replay your work on top of it...
Applying: c2

hui.qian@HUIQIANPC /e/testerhome/AndroidTestScrpits (dev)
$ git log
commit c400448fbeba618553bff53fa4f1fe4e1efa67f4
Author: unknown <hui.qian@HuiQianPC.spreadtrum.com>
Date:   Wed Mar 4 15:33:32 2015 +0800

    c2

commit a775d3768c3dbde939e782769dab141d3998ef48
Author: unknown <hui.qian@HuiQianPC.spreadtrum.com>
Date:   Wed Mar 4 15:32:57 2015 +0800

    c1

可以看出来,它把doctorq的提交放到c2之前,而不是把c1的提交放到c2之后,如果是用merge呢?应该是c1在c2之后的。然后我们回到doctorq分支,快进doctorq分支。

$ git merge dev
Updating a775d37..c400448
Fast-forward
 shell/screenshot.sh | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

hui.qian@HUIQIANPC /e/testerhome/AndroidTestScrpits (doctorq)
$ git log
commit c400448fbeba618553bff53fa4f1fe4e1efa67f4
Author: unknown <hui.qian@HuiQianPC.spreadtrum.com>
Date:   Wed Mar 4 15:33:32 2015 +0800

    c2

commit a775d3768c3dbde939e782769dab141d3998ef48
Author: unknown <hui.qian@HuiQianPC.spreadtrum.com>
Date:   Wed Mar 4 15:32:57 2015 +0800

    c1

总结

rebase和merge的区别在于,merge会产生新的commit,但是rebase不会,且rebase会按照提交顺序合并commit log,让人很清晰的知道提交的事件线。

要记得下面两个命令:

1.git rebase master dev

意思是将server分支衍合到master中。衍合完成后处于master分支。

2.git rebase –onto master dev dev2

进入dev分支,在dev分支和dev2分支中找到共同祖先,然后以此祖先为起点(不包括该起点),将dev分支上的后续变化在master重演一下,重演完成后处于dev分支。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值