肉嘟嘟的程序媛
认证:普通会员
所在专题目录 查看专题
git 版本管理 —— 使用场景以及入门
git 情景 1 —— 封存历史,探索代码的前世今生
git 情景 2 —— 时空穿梭
git 情景 3 —— 多重分身
git 情景 4 —— 永世不灭
作者动态 更多
git 情景 4 —— 永世不灭
2021-12-16 22:14
git 情景 3 —— 多重分身
2021-08-06 17:28
git 情景 2 —— 时空穿梭
2021-06-08 01:20
git 情景 1 —— 封存历史,探索代码的前世今生
2021-05-13 21:11
git 版本管理 —— 使用场景以及入门
2021-05-11 13:12

git 情景 3 —— 多重分身

   上一篇和大家讲解了不用的时空之间来回穿梭,好了,这次我们讲讲关于不同时空中的你是如何产生关联的。比如,当前的你学会了做饭,如何将这个技能完完全全的复制给其他时空的“你”,瞬间让他们学会做饭?且看以下分解。

   如上图,现在又三个不同分身,分别是 master,A,B。他们各自学会的技能依次是:做饭,游泳,工作。示意图如下。

   现在问题来了,我想让 A 学会做饭和工作的技能,该怎么办呢?有人肯定会说,可以让他学呀。这就是程序员开发过程中最辛苦和最没有价值的地方。相同功能的代码反复的 copy 和移植,降低了咱们码农的创造力,浪费大量的时间移植和适配不同版本的代码。

   那么有没有什么比较简易的方法呢? 答案是肯定的。git 就给咱们提供了一个简易的代码 copy 的功能“ git merge ”。比如,我们再 A 分支上使用指令:git merge B。执行完这条语句过后,A 就轻松获得了 B 从 " 初始版本 -> 工作 " 过程中的全部经历。这就好比什么呢,A 当时和 B 分家之后,A 切身实地的感受了一套 B 的人生经历。

   以上这种是一个比较简单的情况,大家的技能不存在任何的交集。但是,如果 A 和 B 都学过游泳,但是他们的泳姿肯定会存在差异,这该怎么办呢?这就是我们本章的重点,差异项的合并取舍问题。这里有点抽象,咱们上“代码”。

   这就类似于上面的初始版本:也就类似于一开始啥都不会,把你扔进河里,你也会扑通的滑几下,这就是本能行为。类似于下面的 breathing = 1.

A 在天生的基础上进行了矫正

B 刚好也在天生的基础上进行了矫正

   大家想想一下,如果有人让你把 A 和 B 的两套代码合并到一起,首先你必须找到不一样的地方,然后做些特殊的手段,让他们可以执行两个流程。而且,实际的代码不同的地方很多,难以真正的看清,太费时费力了。让我们来看看 git merge 这么强大的指令是如何帮助我们实现以下的过程的。

这样子,我们就把 B 从初始版本到现在的所有修改内容全部同步到 A 的上面去了,我们来看看 A 上面的效果。

git 在合并的过程中发现了难题,因为它不知道这两段该怎么取舍,因为 A 和 B 都对他们做出了独特的修改。但是 git 很聪明,它不会的东西,它就把这些内容标记下来,留给你去取舍或则做出兼容。自此,大家就对 git 为什么需要这么多分身有了大概的了解了吧。

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 3
收藏 2
关注 54
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧