查看: 297|回复: 0
打印 上一主题 下一主题

从0开始学习 GitHub 系列之「团队合作利器 Branch」

[复制链接]

9万

主题

9万

帖子

28万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
289121
跳转到指定楼层
楼主
发表于 2017-10-2 07:26:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式






阅读本文大要需要 8 分钟。
Git 相比于 SVN 最强大的一个地方就在于「分支」,Git 的分支操纵简直不要太方便,而现实项目开辟中团队合作最依靠的莫过于分支了,关于分支前面的系列也提到过,可是本篇会具体报告什么是分支、分支的具体操纵以及现实项目开辟中究竟是怎样依靠分支来停止团队合作的。
1什么是分支?我晓得读者中必定有些人对分支这个概念比力模糊,实在你们可以这么了解,你们几小我一路去观光,中心走到一个三岔口,每条路能够有分歧的风光,你们约定 3 天以后在某地会聚,然后各自动身了。而这三条分叉路便可以了解成你们各自的分支,而等你们会聚的时辰相当于把你们的分支停止了合并。
2分支的常用操纵凡是我们默许城市有一个主分支叫 master ,下面我们先来看下关于分支的一些根基操纵:
新建一个叫 develop 的分支
git branch develop
这里稍微提醒下大师,新建分支的号令是基于当前地点分支的根本上停止的,即以上是基于 mater 分支新建了一个叫做 develop 的分支,此时 develop 分支跟 master 分支的内容完全一样。假如你有 A、B、C三个分支,三个分支是三位同学的,各分支内容纷歧样,假如你当前是在 B 分支,假如履行新建分支号令,则新建的分支内容跟 B 分支是一样的,同理假如当前地点是 C 分支,那就是基于 C 分支根本上新建的分支。
切换到 develop 分支
git checkout develop
假如把以上两步合并,即新建而且自动切换到 develop 分支:
git checkout -b develop
把 develop 分支推送到远程仓库
git push origin develop
假如你远程的分支想取名叫 develop2 ,那履行以下代码:
git push origin develop:develop2
可是激烈不倡议这样,这会致使很紊乱,很难治理,所以倡议当地分支跟远程分支名要连结分歧。
检察当地分支列表
git branch
检察远程分支列表
git branch -r
删除当地分支
git branch -d develop
git branch -D develop (强迫删除)
删除远程分支
git push origin :develop
假如远程分支有个 develop ,而当地没有,你想把远程的 develop 分支迁到当地:
git checkout develop origin/develop
一样的把远程分支迁到当地顺便切换到该分支:
git checkout -b develop origin/develop
3根基的团队合作流程一般来说,假如你是一小我开辟,能够只需要 master、develop 两个分支就 ok 了,平常开辟在 develop 分支停止,开辟完成以后,公布之前合并到 master 分支,这个流程没啥大题目。
假如你是 3、5 小我,那就纷歧样了,有人说也没多大题目啊,间接可以新建 A、B、C 三小我的分支啊,每人各自开辟各自的分支,然后开辟完成以后再慢慢合并到 master 分支。但是现实却是,你正在某个分支开辟某个功用呢,这时辰忽然发现线上有一个很严重的 bug ,不能不停动手头的工作优先处置 bug ,而且很多时辰多人合作下假如没有一个标准,很轻易发生题目,所以多人合作下的分支治理标准很重要,就跟代码标准一样重要,以下就跟大师保举一种我们内部在利用的一种分支治理流程 Git Flow。
4Git Flow正确的说 Git Flow 是一种比力成熟的分支治理流程,我们先看一张图能清楚的描写他全部的工作流程:





第一次看上面阿谁图能否是一脸懵逼?跟我那时一样,不急,卧蚀用简单的话给你们诠释下。
一般开辟来说,大部分情况下城市具有两个分支 master 和 develop,他们的职责别离是:
  • master:永久处在行将公布(production-ready)状态
  • develop:最新的开辟状态
    确切的说 master、develop 分支大部分情况下城市连结分歧,只要在上线前的测试阶段 develop 比 master 的代码要多,一旦测试没题目,预备公布了,这时辰会将 develop 合并到 master 上。
    可是我们公布以后又会停止下一版本的功用开辟,开辟中心能够又会碰到需要告急修复 bug ,一个功用开辟完成以后忽然需求变更了等情况,所以 Git Flow 除了以上 master 和 develop 两个首要分支之外,还提出了以下三个帮助分支:
  • feature: 开辟新功用的分支, 基于 develop, 完成后 merge 回 develop
  • release: 预备要公布版本的分支, 用来修复 bug,基于 develop,完成后 merge 回 develop 和 master
  • hotfix: 修复 master 上的题目, 等不及 release 版本就必须顿时上线. 基于 master, 完成后 merge 回 master 和 develop
    什么意义呢?
    举个例子,假定我们已经有 master 和 develop 两个分支了,这个时辰我们预备做一个功用 A,第一步我们要做的,就是基于 develop 分支新建个分支:
    git branch feature/A
    看到了吧,实在就是一个标准,规定了一切开辟的功用分支都以 feature 为前缀。
    可是这个时辰做着做着发现线上有一个告急的 bug 需要修复,那赶紧停动手头的工作,立即切换到 master 分支,然后再此根本上新建一个分支:
    git branch hotfix/B
    代表新建了一个告急修复分支,修复完成以后间接合并到 develop 和 master ,然后公布。
    然后再切回我们的 feature/A 分支继续着我们的开辟,假如开辟完了,那末合并回 develop 分支,然后在 develop 分支属于测试情况,跟后端对接而且测试的差不多了,感受可以公布到正式情况了,这个时辰再新建一个 release 分支:
    git branch release/1.0
    这个时辰一切的 api、数据等都是正式情况,然后在这个分支上停止最初的测试,发现 bug 间接停止点窜,直到测试 ok 到达了公布的标准,最初把该分支合并到 develop 和 master 然落后行公布。
    以上就是 Git Flow 的概念与大要流程,看起来很复杂,可是对于人数比力多的团队合作现实开辟中确切会碰到这么复杂的情况,是今朝很风行的一套分支治理流程,可是有人会问每次都要各类操纵,合并来合并去,有点麻烦,哈哈,这点 Git Flow 早就想到了,为此还专门推出了一个 Git Flow 的工具,而且是开源的:
    GitHub 开源地址:https://github.com/nvie/gitflow
    简单点来说,就是这个工具帮我们省下了很多步调,比如我们当前处于 master 分支,假如想要开辟一个新的功用,第一步切换到 develop 分支,第二步新建一个以 feature 开首的分支名,有了 Git Flow 间接以下操纵完成了:
    git flow feature start A
    这个分支完成以后,需要合并到 develop 分支,但是间接停止以下操纵就行:
    git flow feature finish A
    假如是 hotfix 大概 release 分支甚至会自动帮你合并到 develop、master 两个分支。
    想必大师已经领会了这个工具的具体感化,具体安装与用法我就不多提了,感爱好的可以看我下我之前写过的一篇博客:
    http://stormzhang.com/git/2014/01/29/git-flow/
    5总结以上就是我分享给你们的关于分支的一切常识,一小我你也许感受不到什么,可是现实工作中大都以团队合作为主,而分支是团队合作必备技术,而 Git Flow 是我保举给你们的一个很风行的分支治理流程,也是我们薄荷团队内部一向在理论的一套流程,希望对你们有鉴戒意义。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|IT视频教程资源网

    GMT+8, 2024-11-21 17:27 , Processed in 5.048627 second(s), 22 queries .

    快速回复 返回顶部 返回列表

    客服
    热线

    微信
    7*24小时微信 客服服务

    扫码添
    加微信

    添加客服微信获取更多

    关注
    公众号

    关注微信公众号