Git 变基模式如何理解

发布时间:2022-01-07 17:23:04 作者:柒染
来源:亿速云 阅读:734

Git 变基模式如何理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

今天主要和大伙儿唠唠 GIT 的变基模式(rebase)。

GIT  本身对于一些初学者理解的不是这么好,对我个人来说,一开始一些基本概念在刚接触的时候,并不能通透的理解,只有当将这些概念放到实践形成自己的理解,才能知道这个概念原来是这个意思,以及这个命令是这个样子的。

1、什么是变基(rebase)

变基,我们可以理解为基低的意思。就像盖楼一样,一层层的向上盖,最下面是地基,我们把盖的每一层称为基。

(为了更好的理解,就拿上述盖楼为例)

假如,我们的楼层盖好了,共18层,需要多个装修工去每一层进行装修。我的装修团队一共有三个人,分别为A、B、C。

A 负责第一层,B 负责第二层,C 负责第三层。按照正常的逻辑,三个人谁提前装修完自己的那一层,谁就要到第四层进行装修。

但是有个问题就是,假如 B 第二层也装修完毕,但是 B 不知道其他两个人的最新进度,所以需要通过某种方式,把自己当前的进度更新到最新(B  应该知道下一步该装修第几层),才能继续在其他两人的进度基础上继续装修。

Git 变基模式如何理解

以上盖楼的例子虽然不是太符合项目中团队合作使用 GIT 变基,为了让大伙儿先有个大体的印象。

2、为什么使用变基?

一般我们团队合作使用 GIT 版本控制,每个人在自己分支上开发,最后负责人把每个人开发的分支 merge(合并)  到总分支上就可以了,又出了个变基模式,是干嘛的?

Git 变基模式如何理解

其一,项目变大了,团队的人员变多了,提交的分支越来越多,而且每个人 commit 之后都要合并到主分支,整个 git  分支图看起来烂七八糟,不利于维护和管理。(如上图所示)

其二,项目中充斥着各种各样的 commit ,如果有一天,出现了紧急的事件,需要回滚代码,发现这大量的 commit  需要一条条的看,让你看到怀疑人生。

以上两个理由完全可以让我放弃传统的提交合并,使用变基模式提交的代码就显的格外的清晰。(如下图)

Git 变基模式如何理解

3、如何变基?

对于如何变基,这部分最重要的是需要去实践、实践、实践。没有实践,看了也白看,记住我说的。

变基模式,用到了以下几个常用命令,还是以上述的盖楼为例。

当 B 第二层盖完的时候,它想要得知以下大家的开发进度,然后在大家进度的基础上进行接下来的开发。

就犹如在项目中,我要提交我开发完的功能,但是我开发当前功能的时候,远程仓库中可能有别人已经提交过代码了,导致了我本地仓库和远程仓库代码不一致。

想要在 push 代码前达到与远程仓库代码一致,我们需要 rebase(变基) 一下,命令如下:

1git pull base dev --rebase

这个命令的相当于,B 直接到达了楼层的第五层进行装修。而且我们的装修记录,也就是我们的开发主分支变的非常的清晰和明确,就是一条挂满 commit  的分支线。

Git 变基模式如何理解

4、我玩坏了的变基

但是问题来了,GIT 变基模式前期刚使用的时候,被我多次玩坏,总结出了一些经验。

当我每次提交最新代码的时候,每次忘记  rebase,也就是每次没有顾及到远程的最新代码,而是开发完功能,直接进行提交,导致线上的代码出现分叉(其实又回到了原来的提交方式)。

很着急,该咋办?老大出马,一个顶俩,没毛病。

使用回滚和 pick 的方式,让主分支不再出现分叉。所谓的 pick 是使用 cherry-pick 命令将 commit  的提交重新挂在到你想要挂载的分支上。

1git cherry-pick <commit id>

Git 变基模式如何理解

当你 pick 完之后,再重新进行 push 和 pr,分叉的分支就回到了原来的一条线上。是不是很 nice?

关于Git 变基模式如何理解问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. Git工程开发实践(五)——Git分布式工作流程
  2. Git应用进阶(二)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

git

上一篇:如何进行GPO的原理分析

下一篇:c++显式栈如何实现递归

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》