git看这一篇就够了(2)

git看着一篇就够了(2)

git共分成四个部分,上篇介绍了本地仓库线上仓库 , 本篇将沿着上一篇的内容继续讲解 分支多人协作

​ 想要真正理解一个技术,必须知道技术出现的背景和解决的痛点,只有这样我们才能在真正使用这个技术的时候对其有透彻的了解,那么分支解决的问题是什么那 ?

​ 我们应该都听说过一个成语,叫众人拾柴火焰高,说的是越多人做一件事情速度越快,但是真的是这样么 ? 事实却是不是如此 , 假设我们要组装一辆小小的四驱车,这个时候你一个人组装的效率可能要高于好几个小伙伴给你组装的效率,因为你的小伙伴一会把前轮装在后轮上, 一会齿轮装错了,一会又把电源线搭错了,这个时候相信你的心情一定不好,因为明明自己可以做好的事情,非叫一帮人来添乱,我自己组装多好啊

​ 可以说目前的互联网企业往往面临着这样的尴尬, 明明一个人干可能效率更高,为啥找来一帮人瞎忙活那 ? 这帮人瞎忙活能得到效率的提高么? 其实在初期工程之中,任务量小,维护需求较少的项目一个人做起来确实可能相对轻松一点,但是如果项目日益壮大,维护需求日期增多,这时候我们的项目难道还由一个人去完成么? 不可能的,我们又缺少合适的工具让很多人一起进行开发,所以这个时候急需一种开发模式,和工具来帮我们走出这个低效的泥沼,你瞧 , 模块化和git的分支就出现了。

part1 : 分支

​ 关于模块化的内容在本文暂不展开,如果你还为没有了解该项技术,那么请暂时将其理解为可以及其细致划分工作的一种开发模式,后续会给大家带来部分模块化的讲解。

​ 假设我们现在在一家公司,共同开发一个项目 , 这个项目大概分成 , 首页,登陆注册,列表,详情....

那么我和我的小伙伴分到的模块是一个非常庞大的首页,我们该如何开工那? 我们又如何保证代码的有效性和不相关性那 ?

​ 首先我们先对项目进行一个基本的结构划分

​ --| project

​ --| src 开发目录

​ --| libs

​ require.js

​ jquery-3.3.1.js

​ --| module 模块目录

​ banner.js A

​ popup.js A

​ loader.js B

​ .....

​ --| index 首页目录

​ style.css A|B

​ index.html

​ index.js A|B

​ 目录结构确定了,你和你的小伙伴要更新的部分已经被标出来了,文件后的标签则表示是有A,还是B负责,当然还有A,B共同负责的内容,这下可就麻烦了, 为啥那? 因为开发的时候你总要测试把,两个人代码合并在一起的时候,哪些代码更新了,哪些代码覆盖了, 那些代码又改变了 , 开发过程中难免会彼此更改一些代码, 那么这些问题如果让两个人共同维护一份代码讲变得不可调和,那怎么才能更好的完成两人之间的协作那?

​ 我们给出了分支的方案,将分支分成两类,一类是 master分支 另一类叫做 dev分支,master分支一直都叫master分支,但是dev分支却很少叫dev分支,原因我们一会说,你需要知道的是,master分支是主要分支,我们发布上线的最终结果就是master分支,dev分支是用于开发测试的,那么master分支和dev分支协作的模式是什么样的那 ?

​ 简单来说 dev分支会原模原样地copy一份master分支,也就是说制造一份副本,然后由开发人员尽情地折腾,整烫好了将自己的开发分支交由测试,测试没有问题了,那么再合并回主分支 , 其过程大概如下图:

每一次版本提交都会产生一个新的分支出现

分支0.png

在这里我们初步建立了一个版本,但是随着越来越多的人接入,我们的版本不能变得非常混乱要有序的进行,所以开发人员每个人都拿到了一个当前版本的项目自己做着自己的事情。

1.png

通常我们会以区别的方式命名 dev 导致dev这个东西可能有n条同时在向前

1.5.jpg

这时表示有三个开发人员同时对代码进行开发,那么三个开发人员分配到的工作应该是彼此不相干的, 所以他们都可以开心的做自己的事情让进度持续向前,这个进度是dev1,dev2,dev3其实都无所谓,主要是所有人的进度都向前推进了,他们的协作是成功的,进度因为更多人的参与加快了,那么如此这个工具就成功了。

tip : 我们的分支名命名方式有很多 通常是以 业务名称+开发者姓名这样的模式进行命名的确保自己进度的独立性和高度可识别性。

2.png

当然像这样开发完了一次就结束了么,并没有,我们会继续对dev分支的代码进行合并 merge,确保代码被和n为1,那么这个时候我们就可以将项目的进度向前推一步了,也就是master分支发布一版更新。

3.png

我们通常在开发完毕之后会删除掉多余的分支。

好了说一下分支的操作指令集 :

  1. 创建并切换分支

checkout 切换分支

-b 是branch 的简写,意味创建分支。

$ git checkout -b index-huaizhi

提示内容:
Switched to a new branch 'index-huaizhi'
  1. 查看分支是否成功切换
git branch

* index-huaizhi
  master
  1. 然后add commit 提交版本,这个时候我们就实现了上述的 :
2.png

表示我们的版本进行了一次更新。

  1. 我们将master分支版本向前推进一个版本。 需要用到 merge,该指令表示将指定分支的代码合并到当前分支上

我们将代码切换回master分支,并且将index-huaizhi分支上的内容合并到master分支,那么我们master分支就继续向前走了一步。

git checkout master

git merge index-huaizhi

好了本章节到这里也基本结束了本章阐述了多人协作的使用方式及协作方法,同时也讲解了分支的基本操作,当然我们对于分支的操作还有很多,这些API需要大家自己去探索。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容

  • 这篇博文是自己在学习git过程中的思考总结。本文仅仅代表个人的看法,如有不妥地方还请本文文末留言。 😊 原文链接g...
    Ming_Hu阅读 1,048评论 4 18
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,941评论 3 27
  • Git 安装和使用教程 Git介绍 分布式:Git版本控制系统是一个分布式的系统,是用来保存工程源代码历史状态的命...
    无名_ff98阅读 1,623评论 0 3
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,626评论 9 163
  • 教程网址:http://www.liaoxuefeng.com/wiki/0013739516305929606d...
    maybenai阅读 676评论 0 1