git-rebase命令用法

命令:

        git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>] [<upstream> [<branch>]]

        git rebase [-i | --interactive] [<options>] [--exec <cmd>] [--onto <newbase>] --root [<branch>]

        git rebase --continue | --skip | --abort | --quit | --edit-todo | --show-current-patch

场景: 

          有一条代码线master线,同时有条新需求开发线dev线。master线从B开出分支dev线后,一直在做bug修复(C,D)。如下图:

 

此时,dev线需要合并master线修复的bug,以免重复开发。那我们可以用到git rebase命令。

执行:git rebase --onto master dev,成功后,dev线就会合并C和D提交的记录。如下图:

另一种场景:

两条新功能开发线,一条dev,dev1是在dev的基础上开的新分支,可能dev1的代码更稳定,此时需要将dev1改为master的一条分支,同时将master线上修改的代码与dev1进行合并。

此时,可以执行命令:git rebase --onto master dev dev1,操作成功后,dev1线将有master上的最新代码,同时又包含新开发的功能:

第三种场景:

假设现在有一条分支dev1,发现B和C提交的代码有问题,需要把B和C提交的代码去除,那可以执行命令:

git rebase --onto dev1~4 dev1~1 dev1

执行后,B和C将会从dev1分支的提交记录中去除。

 

git rebase命令主要参数解析:

--onto<newbase>:

newbase指的是需要rebase代码的起点,newbase可以是分支(branch),也可以是任意的提交记录(commit1)。rebase成功后,将以newbase为代码分支起点。

<upstream>:

需要与newbase比对的分支或提交记录。

<branch>:

需要rebase的工作分支。默认为HEAD,例如dev1

--continue

当处理完冲突后,可以使用该命令让rebase继续。

--abort

终止rebase操作,将HEAD设置为rebase之前的分支。如果指定了<branch>,则HEAD将重置为<branch>。否则,HEAD将被重置为rebase之前的分支。

--quit

终止rebase操作,但不会将HEAD重置为原来的分支。index和working tree将不会发生任何改变。

--autostash

在rebase操作之前自动stash当前分支未提交的代码,在rebase操作结束后,自动将stash的记录进行unstash,并与rebase后的代码合并。注意,此操作有可能会导致严重的冲突(conflict),谨慎使用。

-m

--merge

进行rebase操作的时候,同时使用merge进行代码合并。需要注意的是,在进行rebase merge产生冲突的时候,ours为<upstream>指定的分支,theirs为<branch>指定的分支。原因是,rebase merge work的工作原理为,将<branch>上的所有提交记录在<upstream> 分支上进行重提交。

 

  • 5
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值