赞
踩
主要功能
本质
基于某次提交,重塑历史提交记录和整理提交内容。
注:此命令最好在本地分支中使用,避免导致远端历史记录丢失或改写。
一.合并多个commit
应用场景:本地开发功能过程中由于提交了多次,后来发现提交有点冗余,希望将这几次提交合并成一次提交。例如:进行了4次提交,其中发现C2和C3重复,需要合并,分别表示现状和预期。
1> 命令:
- git rebase -i [startpoint] [endpoint]
- 注
- //1:[startpoint] [endpoint] 区间是一个左开右闭的区间
- //2: [endpoint]可以省略,省略的话是当endpoint表示当前分支中head指向的节点
- //3: endpoint一般省略就可以满足需求,如果不省略的话,执行完后会造成分离头指针问题
- 需要通过其它方式处理
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操作虽然可以帮助我们实现特殊场景下的一些需求,个人建议最好还是在本地用,尊重上线的任何提交,也许现在看上去有问题的地方将来某一天发现未必是错的,到时再想还原就比较麻烦了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。