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

Git merge 和 Git rebase,如何选择?

来源: 责编: 时间:2024-07-23 07:18:51 75观看
导读git 应该是当下代码管理最流行的工具,关于其两个重要的指令 git merge 和 git rebase 该如何使用也是争议颇多,这篇文章我们一起来聊一聊。什么是 merge?git merge(合并)是一种将分叉的历史记录重新组合在一起的方法,在使

git 应该是当下代码管理最流行的工具,关于其两个重要的指令 git merge 和 git rebase 该如何使用也是争议颇多,这篇文章我们一起来聊一聊。ve128资讯网——每日最新资讯28at.com

ve128资讯网——每日最新资讯28at.com

什么是 merge?

git merge(合并)是一种将分叉的历史记录重新组合在一起的方法,在使用 git merge 时,当前分支将被更新,比如,将 B分支 merge 到 A分支,A分支就包含了 B分支的代码,但是 B分支不包含 A分支的代码。ve128资讯网——每日最新资讯28at.com

git merge 通常与 git checkout 结合使用,用于选择当前分支,与 git branch -d 结合使用,用于删除过时的源分支。ve128资讯网——每日最新资讯28at.com

如下示例,git merge 需要两个提交指针,并尝试找到两个分支之间的共同基础提交,一旦 git 找到一个共同的基础提交,它将创建一个新的“合并提交”,如下图:ve128资讯网——每日最新资讯28at.com

ve128资讯网——每日最新资讯28at.com

合并后,我们在合并到的分支上有一个新的提交,此提交包含源分支中的所有更改。ve128资讯网——每日最新资讯28at.com

什么是 rebase?

git rebase(变基)是将一系列提交迁移或合并到新的基础提交的方式。ve128资讯网——每日最新资讯28at.com

如下示例,我们通过从主分支 check 出一个另外一个分支的历史来了解 git rebase 的工作原理。ve128资讯网——每日最新资讯28at.com

  • 首先,从主分支上 check 了一个 feature1 分支,并且在 feature1 分支中添加了一些功能,然后进行了 commit 提交;
  • 接着,从 feature1 分支再 check 出 feature2 ,然后对 feature2 分支也进行一些更改;
  • 最后,回到 feature1 分支并提交更多更改;

整个交互的流程图如下:ve128资讯网——每日最新资讯28at.com

ve128资讯网——每日最新资讯28at.com

假如我们需要将 feature2 分支的更改合并到发布的 main 分支中,并且不希望包含 feature1 分支的更改,可以使用下面的指令:ve128资讯网——每日最新资讯28at.com

git rebase --onto main feature1 feature2

该指令用于重新定位 feature2 分支的基础,使其基于 main 分支,而不是 feature1 分支。这是通过将 feature2 分支上的提交应用到 main 分支之上来实现的。ve128资讯网——每日最新资讯28at.com

指令执行结果如下:ve128资讯网——每日最新资讯28at.com

ve128资讯网——每日最新资讯28at.com

feature2 分支的提交已重播到主分支上,feature2 分支现在包含主分支的所有提交以及 feature2 分支的新提交。ve128资讯网——每日最新资讯28at.com

优缺点

接下来,我们一起来看看 git rebase 和 git merge 之间的优缺点。ve128资讯网——每日最新资讯28at.com

1.git merge

优点:ve128资讯网——每日最新资讯28at.com

  • 简单易用:git merge 命令通常比较直观,尤其是对于新手来说。
  • 保留历史:git merge 会保留所有分支的原始提交历史,这对于追踪变化来源非常有帮助。
  • 上下文保留:合并提交(merge commit)可以表明不同分支的合并点,保留了分支的上下文。

缺点:ve128资讯网——每日最新资讯28at.com

  • 合并提交增加:每次合并都会生成一个新的合并提交,可能导致提交历史变得冗长。
  • 复杂的历史结构:在多个分支并行开发时,合并后历史图表可能会变得复杂,难以阅读。

2.git rebase

优点:ve128资讯网——每日最新资讯28at.com

  • 线性历史:通过 git rebase,提交历史变得更加线性,易于阅读和理解。
  • 简洁清晰:没有额外的合并提交,提交历史更简洁。

缺点:ve128资讯网——每日最新资讯28at.com

  • 历史重写:git rebase 会重写提交历史,这在多人协作时可能导致冲突和混淆。

使用 rebase的风险

与 git merge 相比,大多数人对使用 git rebase 都有所顾虑。ve128资讯网——每日最新资讯28at.com

git rebase 和 git merge 的基本目的是相同的,即它们帮助我们将更改从一个分支引入另一个分支,不同之处在于 git rebase 会重写提交历史记录,比如下图:ve128资讯网——每日最新资讯28at.com

ve128资讯网——每日最新资讯28at.com

当多个开发人员在同一分支上工作时,直接使用 rebase 可能会导致混淆和冲突,因为每个开发人员会不断地重播和合并更改。ve128资讯网——每日最新资讯28at.com

假设你和另一位开发人员在名为 login_branch 的功能分支上合作。如果两人都直接对 login_branch 使用 rebase,那么在合并更改时会频繁发生冲突,为了避免这个问题,我们应该注意以下几点:ve128资讯网——每日最新资讯28at.com

  • 仅对自己的本地分支进行 git rebase操作 。
  • 不要对公共分支进行 git rebase操作。
  • 使用 git reflog 撤消 git rebase 操作。

如何选择?

选择 git merge 还是 git rebase 取决于团队的工作流和偏好,以下是一些优化建议:ve128资讯网——每日最新资讯28at.com

(1) 团队协作ve128资讯网——每日最新资讯28at.com

  • 小团队或个人项目:`git rebase` 可以帮助保持提交历史简洁。
  • 大团队或多人合作:`git merge` 保留提交历史,避免重写历史带来的冲突。

(2) 代码审查ve128资讯网——每日最新资讯28at.com

  • 代码审查工具:可以使用代码审查工具(如 GitHub Pull Requests)来审
  • 合并分支前的提交,这样即使使用 git merge 也能清晰地了解每个特性的提交历史。

(3) 混合使用ve128资讯网——每日最新资讯28at.com

  • 专题分支使用 `rebase`:在个人开发的专题分支上使用 `git rebase`,保持历史清晰。
  • 整合分支使用 `merge`:在将专题分支合并到主分支时使用 `git merge`,保留上下文信息。

(4) 命名和注释ve128资讯网——每日最新资讯28at.com

  • 良好的提交信息:无论使用哪种策略,确保提交信息清晰、有意义,可以帮助理解历史。
  • 合并提交注释:在使用 `git merge` 时,可以在合并提交中详细描述合并的内容和目的,保留上下文信息。

总结

git merge 和 git rebase都是 git 比较重要的指令,两个指令并没有绝对的好,也没有绝对的不好,平时使用时一定要注意每个指令的优缺点以及团队的抉择。ve128资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-102909-0.htmlGit merge 和 Git rebase,如何选择?

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

上一篇: 简单工厂模式在C#中的实现

下一篇: 面试官:@Transactional 与 @Async 可以同时使用吗

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • “又被陈思诚骗了”

    “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    花7万退货退款无门:谁在纵容淘宝珠宝商家造假?

    来源:极点商业作者:杨铭在淘宝购买珠宝玉石后,因为保证金不够赔付,店铺关闭,退货退款难、维权无门的比比皆是。“提供相关产品鉴定证书,支持全国复检,可以30天无理由退换货。&
  • 大厂卷向扁平化

    大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    OPPO、vivo、小米等国内厂商Q2在印度智能手机市场份额依旧高达55%

    7月20日消息,据外媒报道,研究机构的报告显示,在全球智能手机出货量同比仍在下滑的大背景下,印度这一有潜力的市场也未能幸免,出货量同比也有下滑,多家厂
  • 华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    北京时间2月27日晚,华为在巴塞罗那举行春季智慧办公新品发布会,在海外市场推出之前已经在中国市场上市的笔记本、平板、激光打印机等办公产品,并首次推出搭载
Top