git rebase的使用

git rebase简单的作用就是合并,同git merge很类似,但是原理又跟git merge不同,下面我们来了解一下git rebase的作用:

1、合并多次commit

在开发过程中,我们要完成一个需求,首先我们会从远程仓库拉取一个相对干净的代码,比如测试环境分支develop,然后基于develop分支再创建一个自己本地的分支,代码如下:

创建自己的分支后,就在当前分支中完成自己的需求,完成后需要并自己测试无误后将自己的代码合并到develop分支再push到远程分支,代码如下:

当然上面讲述的事最基本的步骤,但是在实际开发过程中,可能完成一个需求时,我们可能不止一次的commit,可能有5,6个但是有些commit是不需要的,那我们想清理掉这些commit 该如何,那就可以在自己本地分支上使用git rebase -i,使用git log查看当前分支提交了多少个commit,假设在当前分支我有5次commit,我想把这五个commit合并为一个commit,代码如下:

执行后会跳出一个编辑框,大致如下

commands下面的7行是解释使用时应该填写那个字段来执行你的需求,在这里我们想合并commit但是保留commit的message,所以使用squash,启用vim,按一下a进入编辑,如下:

修改后esc键退出编辑,输入:wq保存并退出,如没冲突,会再次弹出一个编辑框,直接:wq保存退出即可,成功后git log就只会看到一个commit。这样在我们git push的时候就会看到相对比较干净的commit。

2、变基

在前面讲的时候我们5个commit只需要一个,但是有时候5个commit可能需要,那我们合并到develop的时候就会有5个commit,在开发过程中,有时候团队协会开发时,可能会出现好几个人都会修改远程develop分支的代码。

1、在使用merge的时候提交的commit会根据commit的时间来排序,也会生成一个merge的commit,查看commit的历史比较真实。

2、使用rebase提交时,rebase会将你提交的commit删除,复制新的commit放在develop分支后面,这样看起来就会跟没有合并一样

慎重:在使用git rebase的过程中,比较容易出现冲突,在与同事开发过程中最好不要将远程分支的commit用git rebase,也不要使用git pull --rebase,使用git merge更加可靠一些,因为可以git merge的一定可以git rebase,但是可以git rebase的不一定可以git merge

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171210G0D6ST00?refer=cp_1026

扫码关注云+社区