..
我的个人博客:www.susan.net.cn大家好,我是苏三你们平时合并代码的时候用 merge 还是 rebase?我问了一圈,发现有些人不仅没用过 rebase,而且根本就没听说过。别慌,不要紧,没有 rebase 也不影响开发,不影...
A股板块轮动加剧,跨年大妖来袭,这几只票主力已明显介入!微信搜索关注【研讯小组】公众号(可长按复制),回复666,领取代码!
我的个人博客:www.susan.net.cn
大家好,我是苏三
你们平时合并代码的时候用 merge 还是 rebase?
我问了一圈,发现有些人不仅没用过 rebase,而且根本就没听说过。别慌,不要紧,没有 rebase 也不影响开发,不影响合并,不影响发版!
我用 Git 很长时间也一直根本没听过 rebase 为何物,只知道合并分支就是 merge ,直到有一个新入职的同事跟我说:“为什么合并分支不用 rebase 呢?我之前公司都用 rebase,不怎么用merge。"
在那之后,我还头一次听说 rebase 这个命令。
只有在涉及到分支合并的时候才谈到 merge 和 rebase,如果没有合并的需求,那怎么整都无所谓,就像我自己的小产品,从头到尾都只有个 main 分支,开发人只有我自己,也没有冲突一说,有时候写好几天都不带push一次的。
用到分支合并基本都是多人协作的团队项目,通常会有一个主分支,然后有开发分支,有时候还会有一些临时的 feature 分支。
同一个分支也可能出现 merge 的情况,例如我这边有一个老项目平时基本上没其他人动,所以我在修改这个项目的时候基本上想不起来要先pull 一下,当然了,这是一个非常不好的习惯,所以有时候一push代码,发现有人竟然提交新代码上去了,所以这种情况下就自动 merge 一下。
今天主要讨论的是分支合并时的 merge。
下图是 merge 合并分支时前后版本变化的情况。
merge 会创建一个新的合并提交,将两个分支的历史记录保留在一起。
它的特点就是日志保存完整,不管你之前合并进来的那个版本有多少个提交历史,都会被完整的合并到目标分支。
以下是使用 merge 合并后的主分支 Graph 情况,看上去是不是有点乱。
假设有两个分支,main
和 dev
分支,在 dev 分支上开发,然后合并到 main 分支,合并的大致流程如下。
gitcheckoutmain
gitpulloriginmain
gitmergedev
#解决冲突后
gitcommit-m"Mergedevintomain"
gitpushoriginmain
rebase
会将分支上的更改重新应用在目标分支上,重写提交历史。
rebase 方式提交的版本历史是线性的,不会创建新的合并提交,历史记录非常干净。
同样地,假设当前有两个分支,main
和 dev
,用 rebase 方式合并分支的大致流程如下。
gitcheckoutdev
gitpullorigindev
gitrebasemain
#解决冲突后
gitrebase--continue
gitpushorigindev--force
在rebase 的时候还可以使用 squash 参数来压缩提交记录,例如下图,Feature 1 分支的 A、B、C 三个提交记录,使用 rebase squash 后会在主分支变为一个提交记录 F。
使用方式如下,git rebase -i HEAD~3
命令准备压缩最近的3次提交,然后在编辑模式下将pick
改为 squash
,最后推送到远端仓库。
适合那种
gitcheckoutdev
gitrebase-iHEAD~3
#进入编辑模式后,修改`pick`为`squash`
#保存并关闭编辑器后,编辑新的提交信息并保存
gitpushorigindev--force
具体使用哪种方式合并要根据场景和习惯而定,没有绝对的好坏。
使用 merge,如果你希望保留分支的历史记录,并且不介意有合并提交。适用于团队合作时保留每个人的工作记录。
使用 rebase,如果你希望保持提交历史的简洁和线性,适用于希望干净历史的项目。
有些公司规定只能用 rebase,它更适合那种只有单一版本的项目,只有一个主分支一直向前推进,且没有多个分支并行的情况,例如一个产品既要维护2.x 版本又要维护3.x版本,那用 rebase就不合适了。
之前 Vue 项目就是用 rebase 方式合并分支的。
最后给大家推荐一下我的技术专栏《程序员最常见的100个问题》,里面收录了很多踩坑经历,最近收到的好评挺多的。
这个专栏总结了我10年工作中,遇到过的100个常见的问题。可以帮助你增加工作经验,少走很多弯路。
每篇文章会从发现问题、分析问题、解决问题、底层原理和问题总结等多个维度,从浅入深,分享了很多技术细节,以及实际的工作经验。
不光可以学到技术,而且还能知道,为什么要用某些技术,非常值得一看。
扫描下方二维码即可订阅。
原价199,今天只需19,可以永久买断,即将要涨价了。
此外,最近专门创建了粉丝技术交流群,里面大佬挺多的:
感兴趣的小伙伴,可以加苏三微信进群,备注:加群。
A股板块轮动加剧,跨年大妖来袭,这几只票主力已明显介入!微信搜索关注【研讯小组】公众号(可长按复制),回复666,领取代码!
本站内容转载请注明来源并提供链接,数据来自互联网,仅供参考。如发现侵权行为,请联系我们删除涉嫌侵权内容。
你合并代码用 merge 还是用 rebase ?(苏三说技术2024年08月01日文章)
阿里云盘,出现灾难级Bug(苏三说技术2024年09月16日文章)
突发,EasyExcel宣布停更了!(苏三说技术2024年11月10日文章)
Mysql很慢,除了索引,还能因为什么?(苏三说技术2024年07月29日文章)
架构师必须懂这些。。。(苏三说技术2024年10月31日文章)
几行烂代码,用错Transactional,赔了16万。(苏三说技术2024年07月30日文章)
架构师必须掌握这些技术。。。(苏三说技术2024年08月31日文章)
瞧瞧别人家的异常处理,那叫一个优雅(苏三说技术2024年10月24日文章)
阿里神器 Seata(苏三说技术2024年10月19日文章)
裁员了,很严重,大家做好准备吧!(苏三说技术2024年09月04日文章)
版权投诉请发邮件到1191009458#qq.com(把#改成@),我们会尽快处理
Copyright©2023-2024众股360(www.zgu360.com).AllReserved|备案号:湘ICP备2023009521号-3
本站资源均收集整理于互联网,其著作权归原作者所有,如有侵犯你的版权,请来信告知,我们将及时下架删除相应资源
Copyright © 2024-2024 EYOUCMS. 易优CMS 版权所有 Powered by EyouCms