变基 git rebase

关于变基 github 文档的原文在这里

git merge 用途一样, git rebase 也是用来合并分支的

先看这个:

图片来源:点击这里 

下面做分解

图1
图1变基前

图1示例了一个 feature 开发分支从主支 master B 提交上拉出来并且进行了 C D 两次提交,然后 master 分支合并了一个新的提交 M ,此时我们在 feature 上执行命令:

git rebase master

执行完毕后会变成下图:

图2变基后

 解释一下图2发生了什么: feature 分支执行rebase命令后,会和 master 分支一起找到公共祖先也就是 随后将自己基于祖先 B 生成的提交 CD 截断,保存提交内容,删除掉两个提交的commit id,然后取回目标分支也就是 master 将保存的内容应用到 master 上生成两个新的提交记录,需要注意的就是commit id完全不同。

变基的最大的好处是重写历史,下面这个命令允许你以交互式操作对多条记录进行合并和修改

git rebase -i

比如当我们想要修改最近提交的三条记录,我们在命令后跟条件执行:

git rebase -i HEAD~3

此时会进入到一个编辑器界面,并列举了你最近的三条记录,并且在记录下面介绍了你可以对其执行操作的几种命令缩写和全拼解释

  •  p 保留提交不做修改
  •  r 修改注释
  •  e 修改提交
  •  s 将该提交合并到前一个提交上,并保留这个提交信息
  •  f 和 s 一样的效果只是不保留当前提交的提交信息
  •  x 给每一个提交打开一个shell
  •  d 丢弃该提交 

 

动图简单易懂,对于历史提交记录的整理真是太好用了 

解决冲突:

 github 文档的原文在这里

首先解决冲突文件

然后执行以下命令

git add .
git rebase --contine

另外的两种命令

git rebase --abort

放弃,完全撤销,回到rebase之前的状态

git rebase --skip

这个命令完全用不到,文档里都说这个用的少。

 注意点

前面提到变基的最大的好处是重写历史,但是最危险的也是重写历史,因为修改历史中某一个提交会把当前的提交包括后续的所有提交都全部放弃然后重新生成新的commit 所以

不要在 master 上进行变基

不要对推送以后的分支进行变基

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值