当前位置:   article > 正文

Git高级操作之rebase

Git高级操作之rebase

主要功能

  1. 合并多个commit
  2. 修改某次提交的内容
  3. 将一个分支上的某些连续提交复制到另外一个分支上

本质 

     基于某次提交,重塑历史提交记录和整理提交内容。

      注:此命令最好在本地分支中使用,避免导致远端历史记录丢失或改写。

一.合并多个commit

     应用场景:本地开发功能过程中由于提交了多次,后来发现提交有点冗余,希望将这几次提交合并成一次提交。例如:进行了4次提交,其中发现C2和C3重复,需要合并,分别表示现状和预期。

    1> 命令:

  1. git rebase -i [startpoint] [endpoint]
  2. //1:[startpoint] [endpoint] 区间是一个左开右闭的区间
  3. //2: [endpoint]可以省略,省略的话是当endpoint表示当前分支中head指向的节点
  4. //3: endpoint一般省略就可以满足需求,如果不省略的话,执行完后会造成分离头指针问题
  5. 需要通过其它方式处理

    2> 实例

执行完git rebase命令后,会弹出交互界面让用户选择操作,按照下图操作:

然后,会继续弹出交互界面让用户修改注释

二,修改某次提交的内容

     应用场景:本地开发功能过程中由于提交了多次,后来发现某次提交有问题,又不想重新添加一次提交。例如C2'有错误,需要修正,修正后变成C2'',在这个过程中分支头指针并没有变化。

     1> 命令:

git rebase -i  [commit id]  

    2> 实例

上图中执行完git rebase后,修改内容如下:

 总结:通过以上操作,实现了对提交历史记录的重写。

三,将一个分支上的某些连续提交复制到另外一个分支上

应用场景:基于master在本地拉了一个分支进行相关功能开发,等你开发完的时候要合并回master分支的时候,发现master上有别人的修改点。如果使用merge命令合并到master分支上的话会使得master分支多了一个合并的记录导致提交看上去有些乱,如果在使用merge命令之前先在本地分支基于master最新的提交进行rebase,然后再合并到master上,提交记录就会是一条直线,比较清爽。

1. master上有三次提交

 2.基于master创建一个分支deveop

 3.master上新增一次提交

4.develop 上新增一次提交

 5.将develop分支代码直接合并到master上,可以看到提交记录出现一个叉线

 6.换种方式,在develop分支下执行git rebase master,解决完冲突后,提交记录如下:

 7. 切到master分支,然后合并develop分支代码,执行完后的提交记录如下,可以看到提交记录一条线,非常清爽。

 四,总结

    git rebase操作虽然可以帮助我们实现特殊场景下的一些需求,个人建议最好还是在本地用,尊重上线的任何提交,也许现在看上去有问题的地方将来某一天发现未必是错的,到时再想还原就比较麻烦了。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/392105
推荐阅读
相关标签
  

闽ICP备14008679号