资讯专栏INFORMATION COLUMN

合并分支使用Merge还是Rebase

Luosunce / 3064人阅读

摘要:合并到多个目标分支或其他人正在使用当前分支这是应该使用因为你执行时当前分支原先的会被删除会影响他人,形成新的连接在目标分支最新之后。

阅读原文:合并分支使用Merge还是Rebase?

作为一个有追求的开发者,我一定会选择更好的版本管理工具(Git), 使用中我们难免会在 Merge 和 Rebase 中选择其一用于合并分支。

Rebase 和 merge 都是被设计用于集成你所做的改变从一个分支到另一个分支,只是通过不同的方式。虽然目的相同,但不同的方式有不同的优缺点。

区别

例如:我们有下面的几个commit,merge会将一些commit的组合作为一个结果,而rebase会将所有commit添加到目标分支的最近一次提交之后。

通过上图我们可以看到,merge 会存在合并的历史记录,而rebase没有了历史记录且成一条直线。

Merge

简单易理解

源分支和目标分支相互分离

保留功能分支的提交历史和分支图形

分支一旦较多显示比较混乱

Rebase

简化复杂的记录且线性可读

没有合并的记录

多个commit冲突时必须一个个提交去修改

对远程分支rebase需要force push

什么时候使用rebase?什么时候使用merge ?

独立开发

如果你不是团队合作开发,那么你可以优先选择使用rebase来保持你整洁的提交历史。

准备code review

你需要在合并的时候有人来给你review,此时你需要提交一个 merge/pull request,此时别人可review你的代码后会执行merge,这将保存你此次的请求合并的记录,已备将来追溯。

合并到多个目标分支或其他人正在使用当前分支

这是应该使用merge,因为你执行rebase时,当前分支原先的commit会被删除(会影响他人),形成新的commit连接在目标分支最新commit之后。所以在这个条件不成立的时候你可以使用rebase来合并分支。

推荐

在不符合上面第三点时(合并到多个目标分支或其他人正在使用当前分支),个人分支(feature/bugfix/……)中使用rebase来更新主分支(个人分支的来源)上的变动,确保当前分支是最新的,然后提交merge/pull request,由其他人来负责对你的代码进行review并确定是否通过请求,这样可以看到每个人开发合并的历史记录。

不知道你是如何的呢?

往期文章一览

把「策略模式」应用到实际项目中

造个轮子,我学到了什么

技术面试中的软技能

不同时重写equals和hashCode又怎样!

关注微信公众号「码上实战」 回复 :面试视频 和 架构师 送你非常不错的资料。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74555.html

相关文章

  • git rebase VS git merge? 更优雅的 git 合并方式值得拥有

    摘要:请注意,此不违反黄金规则,因为只有你的本地提交被移动,之前的所有内容都不会受到影响。在大多数情况下,这比通过合并提交与远程分支同步更直观。 写在前面 如果你不能很好的应用 Git,那么这里为你提供一个非常棒的 Git 在线练习工具 Git Online ,你可以更直观的看到你所使用的命令会产生什么效果showImg(https://segmentfault.com/img/remote...

    LiuRhoRamen 评论0 收藏0
  • Git基础知识教程整理(Git分支管理)

    摘要:分支的创建合并与删除创建分支与切换分支或者命令加上参数表示创建并切换。或者后面不跟分支名时指列出所有分支,当前分支前面加。删除分支删除本地分支,不能在当前分支执行删除当前分支的操作。 分支的创建、合并与删除 创建分支与切换分支 $ git branch develop$ git checkout develop 或者 $ git checkout -b develop git che...

    xingpingz 评论0 收藏0
  • 猿猿有责,维持整洁的 Git 提交记录,三个锦囊送给你

    摘要:背景背景大家都有学习如何规范简洁的编写代码,但却很少学习如何规范简洁的提交代码。背景 大家都有学习如何规范简洁的编写代码,但却很少学习如何规范简洁的提交代码。现在大家基本上都用 Git 作为源码管理的工具,Git 提供了极大的灵活性,我们按照各种 workflow 来提交/合并 code,这种灵活性把控不好,也会带来很多问题 最常见的问题就是乱成一团的 git log histo...

    wendux 评论0 收藏0
  • 浅析git

    摘要:还可以通过检查对象内容的的哈希值和对象名是否相同,来判断对象内容是否正确。对象对象和其它所有的对象一样,都用其内容的哈希值来命名的只有当两个对象的内容完全相同包括其所指向所有子对象时,它的名字才会一样,反之亦然。 git是什么 简单来说,Git,它是一个快速的 分布式版本控制系统 (Distributed Version Control System,简称 DVCS) 。 同传统的 集...

    jas0n 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<