社区中长期以来一直在争论我们应该使用Merge还是Rebase。

有人会说Merge更好,因为它保留了最完整的工作历史。其他人则认为,Rebase变得更整洁,这使审阅者的生活更轻松,更高效。本文将解释合并和重新设置之间的区别是什么,使用它们之一有什么好处。

从根本上讲,合并和rebase提供了相同的目的,以将来自一个分支(有时倍数分支)的变化集成到另一个分支中。最常用的是在打开Pull请求之前将最新的Master或开发分支集成。虽然目的是相同的,但Merge和Rebase达到的方式不同。

> Image by Author

快速了解目标。想象一下,您有一个这样的分支“功能”,它是从“基础”的“开发”分支出来的。从那时起,您就完成了C,D,E的工作,并且对develop进行了2个更改,即A,B。现在,您想打开一个pull请求,将“您的功能”集成到“ develop分支”中。。在此之前,您必须将“开发分支”中的更改集成到“您的功能分支”中,这样您的拉取请求中就不会出现冲突。

Merge

> Image by Author

合并将在您的特征分支中将更改集成,并创建一个新的提交F. F是合并开发分支的提交,如果有的话,对冲突进行排序。此方法将为特征分支带来Develp分支的更改,即A和B。现在,您的特征分支上的提交是C,A,D,B,E,F.有3个添加到您的功能分支中的其他提交。

Rebase

> Image by Author

另一方面,rebase会移动整个功能分支,就像它从一开始就从开发分支的最新提交分支出来一样。Rebase将首先搜索功能分支的基础,然后将其更改为开发分支B上的最新提交,然后根据该基础B将所有提交重新应用到功能分支上。Rebase实际上是创建新提交,C’,D’,E’。原始提交保持不变。最后,它将要素分支指向的要素从E更改为E’。

优点

这两种方法之间的最大区别在于,合并保留了作品的完整历史记录,包括按时间顺序排列,而Rebase使提交变得整洁,仅与分支上的作品相关。当审阅者审阅您的PR时,如果您选择合并,她将看到A,B,C,D,E,F提交,如果您选择Rebase,则只会看到C,D,E。

合并具有较高的可追溯性。无论与该公关相关如何,您都可以找到整个工作历史。但它可能对审稿人来说是痛苦的,因为该分支包括许多无关的犯罪,并且往往很难识别它们。

Rebase的确可以使PR整洁,干净且相关,而不会产生嘈杂的提交。审阅者可以轻松了解此PR的含义以及该分支内进行的更改。但是,如果您想跟踪存储库的详尽历史记录,可能并没有太大帮助。

Merge具有更高的可追溯性,而Rebase则更整洁且易于审核。

那我应该使用哪一个?

这实际上取决于您的组织所采用的工作策略。您必须权衡Rebase的价值与Merge可追溯性的价值。这两种方法也可能同时应用,在某些情况下请使用某种方法。

根据我的个人经验,Rebase更为有利,因为它提供了与团队成员合作的更轻松的方式。而且在大多数时候,我们确实应该避免将与我们的工作无关的提交包含在PR中。这很容易导致混乱。

(本文由闻数起舞翻译自Christopher Tao的文章《The Differences between Rebase and Merge》,转载请注明出处,原文链接:
https://towardsdatascience.com/the-differences-between-rebase-and-merge-30c91cd18f30)

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

Git:Rebase和Merge之间的区别,看完这篇文章你就懂了!相关推荐

  1. 不懂函数指针与指针函数?看完这篇文章就能懂

    前言 当学习数组指针与指针数组的时候很是让人头疼,到底是数组还是指针?深入学习到函数的时候发现既然有函数指针与指针函数这么个更让人头疼的难以区分的问题.当去看一眼定义的时候,噼里啪啦一串又长又绕,真让 ...

  2. MyBatis 中 #{} 和 ${} 的区别看完这篇文章一目了然

    我们知道 MyBatis 中对于参数的赋值有两种方式, 一种是使用 #{}, 一种是使用 ${}, 这两种参数赋值的方式对于有些情况都可以正常使用, 但是针对某些场景, ${} 却会报错. 本篇文章主 ...

  3. 讲的真详细!花三分钟看完这篇文章你就懂了

    前言 今年互联网形式依旧严峻,再次爆发几次大规模裁员潮.我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友.根据粉丝投稿的真实经历改编 在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱, ...

  4. 电脑投屏到电视android,电脑怎么投屏到电视?看完这篇文章你就懂了

    之前我们介绍过了手机怎么投屏到电视上观看,其实使用电脑投屏也很方便,同样是有线.无线两种方式.有线连接不用过多介绍,根据电脑.电视接口选择相应的连接线就可以了,这篇文章主要告诉你怎么才能无线投屏. 1 ...

  5. 日立服务器显示屏哪里买,不知道买什么面板的显示器?看完这篇文章你就懂了...

    目前市面上主流的显示器都是LCD,也就是液晶显示器,而目前市场上有许多种类的液晶显示器,比如TN屏.IPS屏还有VA屏等等.那么这些不同种类的面板究竟是在哪些地方上面有区别?各自又有什么样的特性?这篇 ...

  6. android面试必看书籍,花三分钟看完这篇文章你就懂了

    刷题 我刷题的方式都是老套路了,LeetCode+<剑指offer>,虽然老,但是效果非常不错,除此之外,再搜一搜网上的一些大厂面试题.看了很多面经.这个过程不仅是个脑力活还是体力活,由于 ...

  7. 商务智能(BI)=数据分析?才不是!看完这篇文章你就懂了

    大数据时代,商务智能风头正盛.过去传统商务智能工具独大,现在逐渐开始有越来越多的轻型BI(自助BI)出现在市场中,比如tableau和FineBI,并且占有着很大的市场份额. 于是很多企业就开始思考是 ...

  8. 女生适合做测试吗?看完这篇文章你就懂了

    前言 在我们的传统的想法中,女生的编程思维可能会弱于男生,也导致好多女生会直接躲开编程领域,女程序员的数量也是比较少的,但是也并不是所有的IT行业女生数量都是少于男生的,比如说软件测试,那么女生做软件 ...

  9. 学物理竞赛有多难?应该怎么学?都考什么?看完这篇文章你就懂了!

    首先,要了解物理竞赛的考试形式和过程. 物理竞赛分为预赛.预赛和决赛. 初赛由全国竞赛委员会统一提案,采取笔试形式,所有中学生均可报名参加. 在初赛成绩优秀的学生从地区.市.县推荐,可以参加复赛.重赛 ...

最新文章

  1. 基于uml的系统分析的网上商城_UML建模工具Enterprise Architect最新版有哪些新功能呢?立即查看...
  2. 把c++语言转换为go的工具_V,新编程语言来袭!与Go类似,跟C一样快
  3. 解决自建ca认证后浏览器警告
  4. CentOS7 1.搭建环境脚本
  5. Python Day15 jQuery
  6. 送几本~ 648页全彩+395张插图 机器翻译 扛鼎之作
  7. stdmove 跟 左键引用 区别_C++ auto和decltype的区别
  8. 【链表】链表中环的入口结点
  9. 实验五 单表查询(V2.0版)
  10. 学习pytorch: 语义分割工具
  11. NO5 grep-head-tail命令
  12. [转载]Dorado中DataTable使用技巧汇总
  13. 【集合论】关系表示 ( 关系矩阵 | 关系矩阵示例 | 关系矩阵性质 | 关系矩阵运算 | 关系图 | 关系图示例 | 关系表示相关性质 )
  14. 第十届全国大学生GIS应用技能大赛下午(试题及参考答案)
  15. android开发面试问题,这个回答让我错失offer!好文推荐
  16. 教你10分钟电脑配置挑选装机速成攻略
  17. vue框架 做后台管理系统的总结(WZ)
  18. ORACLE ASSETS 11i资产管理
  19. DHCP-小结(拓展 网卡文件的配置)
  20. 【科普】人眼到底等于多少像素

热门文章

  1. HTML基础(格式标签)
  2. Real to Int
  3. FFMpeg中apiexample.c例子分析——解码分析
  4. halcon圆环完整度检测
  5. halcon边缘检测的方法及各种方法的适用范围
  6. halcon联合C#测量十字Mark中心
  7. HALCON示例程序forest.hdev识别森林中的树
  8. EPSON 自带CCD图像处理包的典型应用框架
  9. excel打开后灰色不显示内容_Excel二维表转换,一分钟就够
  10. android jar导出,Android项目导出jar包的小技巧