新参数 --rebase-merges 让 git rebase 完美变基更强大

栏目: 编程工具 · 发布时间: 6年前

内容简介:之前曾经分享过然而,这是理想情况下的操作,比如你的分支是基于 master 的上一个节点进行开发且期间并没有和 master 进行互动,那么,就可以使用

前言

之前曾经分享过 灵活运用 git rebase,让团队协作下的提交记录整洁些 ,使用 --preserve-merges 参数(简写 -p ),可以像剪刀一样 咔嚓 一下将整段分支历史基于最新 master 分支进行变基迁移,效果非常的赞。

新参数 --rebase-merges 让 git rebase 完美变基更强大

然而,这是理想情况下的操作,比如你的分支是基于 master 的上一个节点进行开发且期间并没有和 master 进行互动,那么,就可以使用 git rebase master -p 这个命令进行完美变基。

问题来了

但是!我们常常碰到这样一个情况:有很多个特性分支基于同一个 master 节点同时开发,然后大家合并进 test 分支一起开始测试,这时候,其中一个特性分支需要先上线它先合进了 master 分支。

新参数 --rebase-merges 让 git rebase 完美变基更强大

于是仍在测试中的其他分支表示这个场景非常尴尬,说好的好兄弟共同进退呢。。。

改族谱清理门户

事情已经发生了, test 分支表示不再认这个兄弟了,更不能忍受自己的提交历史里出现这段黑历史,于是祭出大招 git rebase -i ,要清理自己的提交历史。

历史是任人打扮的小姑娘

新参数 --rebase-merges 让 git rebase 完美变基更强大

git rebase --interactive

简单的说, --interactive 参数(简写 -i )可以用来编辑提交历史,然而在 2.17.0 版本之前,这个命令配合 --preserve-merges 并不能做到完美的历史编辑,甚至在 git --help 的文档里都直接的指出这个 bug 一直存在,而且存在了很多年-。-

新参数 --rebase-merges 让 git rebase 完美变基更强大

新参数 --rebase-merges

就如 PHP 跳过了6直接来个7一样, -i -p 的 bug 困扰了大家很多年,忍无可忍一忍再忍,总算一个新的参数 --rebase-merges (简写 -r )从 2.18.0 版本出现了,这个参数可以实现若干强大功能暂且不说

我也不熟 ,总之,我们想要 重改历史

这件事现在可以做到了。

注意:此特性需要git版本2.18.0以上,最好是最新版本。

第一步:清理门户

在前文里,我们说过,要想完美的使用 git rebase master -p 来基于最新 master 分支进行变基,前提是两者之间不要出现互动交集。

如果出现了交集,比如提交历史里的某个特性分支先合并进 master上线了,那么,就要清理门户,移除当前测试分支里的黑历史。

使用命令: git rebase -i -r c82269475b9....1addb9f3f6fd 进行历史编辑。

此处的 c82269475b9....1addb9f3f6fd 为当前测试分支的根节点(通常是 master 分支的上一个节点)

还记得上文里,先跑的分支曾经三次合并进 test 分支么?在此处,注释掉这三次合并动作。

新参数 --rebase-merges 让 git rebase 完美变基更强大

清理门户之后,test 分支的历史里就和最新 master 没有交集了,可以进行下一步完美变基。

新参数 --rebase-merges 让 git rebase 完美变基更强大

第二步:完美变基

这步简单,可以参考前文,使用 git rebase master -p 来基于最新 master 分支进行变基即可。

新参数 --rebase-merges 让 git rebase 完美变基更强大

后语

变基这件事吧,其实挺违背版本控制的理念的,然而对有洁癖的开发者来说,头可断血可流发型不能乱,所以在沟通良好的团队或个人开发过程中,变基用的好,也未尝不是一件妙事儿。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深度学习核心技术与实践

深度学习核心技术与实践

猿辅导研究团队 / 电子工业出版社 / 2018-2 / 119.00元

《深度学习核心技术与实践》主要介绍深度学习的核心算法,以及在计算机视觉、语音识别、自然语言处理中的相关应用。《深度学习核心技术与实践》的作者们都是业界一线的深度学习从业者,所以书中所写内容和业界联系紧密,所涵盖的深度学习相关知识点比较全面。《深度学习核心技术与实践》主要讲解原理,较少贴代码。 《深度学习核心技术与实践》适合深度学习从业人士或者相关研究生作为参考资料,也可以作为入门教程来大致了......一起来看看 《深度学习核心技术与实践》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具