当前位置:首页 > 科技  > 软件

你合并代码用 Merge 还是用 Rebase ?

来源: 责编: 时间:2024-07-06 07:45:15 287观看
导读你们平时合并代码的时候用 merge 还是 rebase?我问了一圈,发现有些人不仅没用过 rebase,而且根本就没听说过。别慌,不要紧,没有 rebase 也不影响开发,不影响合并,不影响发版!我用 Git 很长时间也一直根本没听过 rebase 为何物

你们平时合并代码的时候用 merge 还是 rebase?xjM28资讯网——每日最新资讯28at.com

我问了一圈,发现有些人不仅没用过 rebase,而且根本就没听说过。别慌,不要紧,没有 rebase 也不影响开发,不影响合并,不影响发版!xjM28资讯网——每日最新资讯28at.com

我用 Git 很长时间也一直根本没听过 rebase 为何物,只知道合并分支就是 merge ,直到有一个新入职的同事跟我说:“为什么合并分支不用 rebase 呢?我之前公司都用 rebase,不怎么用merge。"xjM28资讯网——每日最新资讯28at.com

在那之后,我还头一次听说 rebase 这个命令。xjM28资讯网——每日最新资讯28at.com

只有在涉及到分支合并的时候才谈到 merge 和 rebase,如果没有合并的需求,那怎么整都无所谓,就像我自己的小产品,从头到尾都只有个 main 分支,开发人只有我自己,也没有冲突一说,有时候写好几天都不带push一次的。xjM28资讯网——每日最新资讯28at.com

用到分支合并基本都是多人协作的团队项目,通常会有一个主分支,然后有开发分支,有时候还会有一些临时的 feature 分支。xjM28资讯网——每日最新资讯28at.com

merge 合并分支

同一个分支也可能出现 merge 的情况,例如我这边有一个老项目平时基本上没其他人动,所以我在修改这个项目的时候基本上想不起来要先pull 一下,当然了,这是一个非常不好的习惯,所以有时候一push代码,发现有人竟然提交新代码上去了,所以这种情况下就自动 merge 一下。xjM28资讯网——每日最新资讯28at.com

今天主要讨论的是分支合并时的 merge。xjM28资讯网——每日最新资讯28at.com

下图是 merge 合并分支时前后版本变化的情况。xjM28资讯网——每日最新资讯28at.com

图片图片xjM28资讯网——每日最新资讯28at.com

merge 会创建一个新的合并提交,将两个分支的历史记录保留在一起。xjM28资讯网——每日最新资讯28at.com

它的特点就是日志保存完整,不管你之前合并进来的那个版本有多少个提交历史,都会被完整的合并到目标分支。xjM28资讯网——每日最新资讯28at.com

以下是使用 merge 合并后的主分支 Graph 情况,看上去是不是有点乱。xjM28资讯网——每日最新资讯28at.com

图片图片xjM28资讯网——每日最新资讯28at.com

假设有两个分支,main 和 dev分支,在 dev 分支上开发,然后合并到 main 分支,合并的大致流程如下。xjM28资讯网——每日最新资讯28at.com

git checkout maingit pull origin maingit merge dev# 解决冲突后git commit -m "Merge dev into main"git push origin main

Rebase 合并分支

rebase 会将分支上的更改重新应用在目标分支上,重写提交历史。xjM28资讯网——每日最新资讯28at.com

图片图片xjM28资讯网——每日最新资讯28at.com

rebase 方式提交的版本历史是线性的,不会创建新的合并提交,历史记录非常干净。xjM28资讯网——每日最新资讯28at.com

同样地,假设当前有两个分支,main 和 dev,用 rebase 方式合并分支的大致流程如下。xjM28资讯网——每日最新资讯28at.com

git checkout devgit pull origin devgit rebase main# 解决冲突后git rebase --continuegit push origin dev --force

合并压缩

在rebase 的时候还可以使用 squash 参数来压缩提交记录,例如下图,Feature 1 分支的 A、B、C 三个提交记录,使用 rebase squash 后会在主分支变为一个提交记录 F。xjM28资讯网——每日最新资讯28at.com

图片图片xjM28资讯网——每日最新资讯28at.com

使用方式如下,git rebase -i HEAD~3 命令准备压缩最近的3次提交,然后在编辑模式下将pick 改为 squash,最后推送到远端仓库。xjM28资讯网——每日最新资讯28at.com

适合那种:xjM28资讯网——每日最新资讯28at.com

git checkout devgit rebase -i HEAD~3# 进入编辑模式后,修改 `pick` 为 `squash`# 保存并关闭编辑器后,编辑新的提交信息并保存git push origin dev --force

选择使用哪种方法

具体使用哪种方式合并要根据场景和习惯而定,没有绝对的好坏。xjM28资讯网——每日最新资讯28at.com

使用 merge,如果你希望保留分支的历史记录,并且不介意有合并提交。适用于团队合作时保留每个人的工作记录。xjM28资讯网——每日最新资讯28at.com

使用 rebase,如果你希望保持提交历史的简洁和线性,适用于希望干净历史的项目。xjM28资讯网——每日最新资讯28at.com

有些公司规定只能用 rebase,它更适合那种只有单一版本的项目,只有一个主分支一直向前推进,且没有多个分支并行的情况,例如一个产品既要维护2.x 版本又要维护3.x版本,那用 rebase就不合适了。xjM28资讯网——每日最新资讯28at.com

之前 Vue 项目就是用 rebase 方式合并分支的。xjM28资讯网——每日最新资讯28at.com

图片 图片 xjM28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-99172-0.html你合并代码用 Merge 还是用 Rebase ?

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 摆脱 if-else 束缚的清洁编码之旅:这些技术帮你实现

下一篇: 携程门票秒杀系统的设计与实践

标签:
  • 热门焦点
  • 一加Ace2 Pro官宣:普及16G内存 引领24G

    一加官方今天继续为本月发布的新机一加Ace2 Pro带来预热,公布了内存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引领,还有呢?#一加Ace2Pro#,2023 年 8 月,敬请期待。”同时
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 学习JavaScript的10个理由...

    作者 | Simplilearn编译 | 王瑞平当你决心学习一门语言的时候,很难选择到底应该学习哪一门,常用的语言有Python、Java、JavaScript、C/CPP、PHP、Swift、C#、Ruby、Objective-
  • WebRTC.Net库开发进阶,教你实现屏幕共享和多路复用!

    WebRTC.Net库:让你的应用更亲民友好,实现视频通话无痛接入! 除了基本用法外,还有一些进阶用法可以更好地利用该库。自定义 STUN/TURN 服务器配置WebRTC.Net 默认使用 Google 的
  • 微软邀请 Microsoft 365 商业用户,测试视频编辑器 Clipchamp

    8 月 1 日消息,微软近日宣布即将面向 Microsoft 365 商业用户,开放 Clipchamp 应用,邀请用户通过该应用来编辑视频。微软于 2021 年收购 Clipchamp,随后开始逐步整合到 Microsof
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • DRAM存储器10月价格下跌,NAND闪存本月价格与上月持平

    10月30日,据韩国媒体消息,自今年年初以来一直在上涨的 DRAM 存储器的交易价格仅在本月就下跌了近 10%,此次是全年首次降价,而NAND 闪存本月价格与上月持平。市
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top