rebase
git rebase,字面意思就是从新奠定基础,能够将分叉的分支重新合并
使用
整理分支的本地多个提交
如图 dev分支6个本地的commit
![6个提交](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031102242000-956306192.png)
当前分支,使用命令git rebase -i
![rebase](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031102453966-637320637.png)
如图所示,将dev-1、dev-2、dev-3合并到init的commit
![结果](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031102948851-917777254.png)
整理分支的远程多个提交
如图dev push到远程
![](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031103548583-650643615.png)
想要合并已经push到远程的commit
在dev分支,执行git rebase -i dev~4
,这里的4是含义是当前HEAD到前4个commit的重新编辑
![](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031104250816-1530953539.png)
![](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031104301178-2137846285.png)
![](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031104722489-1255808929.png)
合并代码,log线性化
dev分支开发完成,想要合并master
一般操作是先把master代码拉取,合并到dev,然后dev提交
这样存在一个分支图分叉的问题,强迫症患者觉得很不雅
新方法,本地master拉取最新代码,在dev分支上使用git rebase -i master
具体含义可以理解基于master代码筑基
解决冲突后执行git push -f
解决冲突后提交
![](https://img2020.cnblogs.com/blog/1780187/202010/1780187-20201031110352535-1153797404.png)
看到master分支是线性的
参考