我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Git协作流程解析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Git协作流程解析

今天我们一起来了解“Git协作流程”,希望可以帮助到那些需要帮助的人。要认真的阅读哦!   

     协作必须有一个规范的流程,让大家有效地合作,使得项目井井有条地发展下去。"协作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。

Git协作流程解析_电子邮件协议_互联网技术_网络工程师_编程学习网教育

  本文介绍三种广泛使用的协作流程:

  Gitflow

  Githubflow

  如果你对Git还不是很熟悉,可以先阅读下面的文章。

  《Git使用规范流程》

  《常用Git命令清单》

  《Git远程操作详解》

  一、功能驱动

  本文的三种协作流程,有一个共同点:都采用"功能驱动式开发"(Feature-drivendevelopment,简称FDD)。

  它指的是,需求是开发的起点,先有需求再有功能分支(featurebranch)或者补丁分支(hotfixbranch)。完成开发后,该分支就合并到主分支,然后被删除。

  Git介绍

  Git---Thestupidcontenttracker,傻瓜内容跟踪器。LinusTorvalds是这样给我们介绍Git的。

  Git是用于Linux内核开发的版本控制工具。与常用的版本控制工具CVS,Subversion等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。Git的速度很快,这对于诸如Linuxkernel这样的大项目来说自然很重要。Git最为出色的是它的合并跟踪(mergetracing)能力。

  实际上内核开发团队决定开始开发和使用Git来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是Git太艰涩难懂,从Git的内部工作机制来说,的确是这样。但是随着开发的深入,Git的正常使用都由一些友好的脚本命令来执行,使Git变得非常好用,即使是用来管理我们自己的开发项目,Git都是一个友好,有力的工具。现在,越来越多的著名项目采用Git来管理项目开发.

  作为开源自由原教旨主义项目,Git没有对版本库的浏览和修改做任何的权限限制。

  目前GIT已经可以在Windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法类似,Windows版本的GIT提供了友好的GUI(图形界面),安装后很快可以上手,不在此做大篇幅介绍。

  本文将以Git官方文档Tutorial,core-tutorial和EverydayGIT作为蓝本翻译整理,但是暂时去掉了对Git内部工作机制的阐述,力求简明扼要,并加入了作者使用Git的过程中的一些心得体会,注意事项,以及更多的例子。建议你最好通过你所使用的Unix/Linux发行版的安装包来安装Git,你可以在线浏览本文,也可以通过下面的命令来得到本文最新的版本库,并且通过后面的学习用Git作为工具参加到本文的创作中来。

  (Snake.Zero注:以下假设环境为Unix/Linux,本次修正主要是版本问题,git-addgit-init-db等命令都改为了类似gitadd形式的,以免误导新手。)

  二、Gitflow

  最早诞生、并得到广泛采用的一种协作流程,就是Gitflow。

  2.1特点

  它最主要的特点有两个。

最早诞生、并得到广泛采用的一种协作流程,就是Gitflow。

  首先,项目存在两个长期分支。

  主分支master

  开发分支develop

  前者用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版;后者用于日常开发,存放最新的开发版。

  其次,项目存在三种短期分支。

  功能分支(featurebranch)

  补丁分支(hotfixbranch)

  预发分支(releasebranch)

  一旦完成开发,它们就会被合并进develop或master,然后被删除。

  Gitflow的详细介绍,请阅读我翻译的中文版《Git分支管理策略》。

  2.2评价

  Gitflow的优点是清晰可控,缺点是相对复杂,需要同时维护两个长期分支。大多数工具都将master当作默认分支,可是开发是在develop分支进行的,这导致经常要切换分支,非常烦人。

  更大问题在于,这个模式是基于"版本发布"的,目标是一段时间以后产出一个新版本。但是,很多网站项目是"持续发布",代码一有变动,就部署一次。这时,master分支和develop分支的差别不大,没必要维护两个长期分支。

  三、Githubflow

  Githubflow是Gitflow的简化版,专门配合"持续发布"。它是Github.com使用的协作流程。

  3.1流程

  它只有一个长期分支,就是master,因此用起来非常简单。

  官方推荐的流程如下。

它只有一个长期分支,就是master,因此用起来非常简单。官方推荐的流程如下。

  第一步:根据需求,从master拉出新分支,不区分功能分支或补丁分支。

  第二步:新分支开发完成后,或者需要讨论的时候,就向master发起一个pullreqest(简称PR)。

  第三步:PullRequest既是一个通知,让别人注意到你的请求,又是一种对话机制,大家一起评审和讨论你的代码。对话过程中,你还可以不断提交代码。

  第四步:你的PullRequest被接受,合并进master,重新部署后,原来你拉出来的那个分支就被删除。(先部署再合并也可。)

  3.2评价

  Githubflow的最大优点就是简单,对于"持续发布"的产品,可以说是最合适的流程。

  问题在于它的假设:master分支的更新与产品的发布是一致的。也就是说,master分支的最新代码,默认就是当前的线上代码。

  可是,有些时候并非如此,代码合并进入master分支,并不代表它就能立刻发布。比如,苹果商店的app提交审核以后,等一段时间才能上架。这时,如果还有新的代码提交,master分支就会与刚发布的版本不一致。另一个例子是,有些公司有发布窗口,只有指定时间才能发布,这也会导致线上版本落后于master分支。

  上面这种情况,只有master一个主分支就不够用了。通常,你不得不在master分支以外,另外新建一个production分支跟踪线上版本。

  四、Gitlabflow

  Gitlabflow是Gitflow与Githubflow的综合。它吸取了两者的优点,既有适应不同开发环境的弹性,又有单一主分支的简单和便利。它是Gitlab.com推荐的做法。

  4.1上游优先

  Gitlabflow的最大原则叫做"上游优先"(upsteamfirst),即只存在一个主分支master,它是所有其他分支的"上游"。只有上游分支采纳的代码变化,才能应用到其他分支。

  Chromium项目就是一个例子,它明确规定,上游分支依次为:

  LinusTorvalds的分支

  子系统(比如netdev)的分支

  设备厂商(比如三星)的分支

  4.2持续发布

  Gitlabflow分成两种情况,适应不同的开发流程。

Gitlabflow分成两种情况,适应不同的开发流程

  对于"持续发布"的项目,它建议在master分支以外,再建立不同的环境分支。比如,"开发环境"的分支是master,"预发环境"的分支是pre-production,"生产环境"的分支是production。

  开发分支是预发分支的"上游",预发分支又是生产分支的"上游"。代码的变化,必须由"上游"向"下游"发展。比如,生产环境出现了bug,这时就要新建一个功能分支,先把它合并到master,确认没有问题,再cherry-pick到pre-production,这一步也没有问题,才进入production。

  只有紧急情况,才允许跳过上游,直接合并到下游分支。

  4.3版本发布

只有紧急情况,才允许跳过上游,直接合并到下游分支

  对于"版本发布"的项目,建议的做法是每一个稳定版本,都要从master分支拉出一个分支,比如2-3-stable、2-4-stable等等。

  以后,只有修补bug,才允许将代码合并到这些分支,并且此时要更新小版本号。

  五、一些小技巧

  5.1PullRequest

功能分支合并进master分支,必须通过PullRequest(Gitlab里面叫做MergeRequest)

  功能分支合并进master分支,必须通过PullRequest(Gitlab里面叫做MergeRequest)。

 前面说过,PullRequest本质是一种对话机制,你可以在提交的时候,@相关人员或团队,引起他们的注意

  前面说过,PullRequest本质是一种对话机制,你可以在提交的时候,@相关人员或团队,引起他们的注意。

  5.2Protectedbranch

  master分支应该受到保护,不是每个人都可以修改这个分支,以及拥有审批PullRequest的权力。

  Github和Gitlab都提供"保护分支"(Protectedbranch)这个功能。

  5.3Issue

  Issue用于Bug追踪和需求管理。建议先新建Issue,再新建对应的功能分支。功能分支总是为了解决一个或多个Issue。

  功能分支的名称,可以与issue的名字保持一致,并且以issue的编号起首,比如"15-require-a-password-to-change-it"。

功能分支的名称,可以与issue的名字保持一致,并且以issue的编号起首,比如"15-require-a-password-to-change-it"

  开发完成后,在提交说明里面,可以写上"fixes#14"或者"closes#67"。Github规定,只要commitmessage里面有下面这些动词+编号,就会关闭对应的issue。

  close

  closes

  closed

  fix

  fixes

  fixed

  resolve

  resolves

  resolved

  这种方式还可以一次关闭多个issue,或者关闭其他代码库的issue,格式是username/repository#issue_number。

  PullRequest被接受以后,issue关闭,原始分支就应该删除。如果以后该issue重新打开,新分支可以复用原来的名字。

  5.4Merge节点

  Git有两种合并:一种是"直进式合并"(fastforward),不生成单独的合并节点;另一种是"非直进式合并"(nonefast-forword),会生成单独节点。

  前者不利于保持commit信息的清晰,也不利于以后的回滚,建议总是采用后者(即使用--no-ff参数)。只要发生合并,就要有一个单独的合并节点。

  5.5Squash多个commit

  为了便于他人阅读你的提交,也便于cherry-pick或撤销代码变化,在发起PullRequest之前,应该把多个commit合并成一个。(前提是,该分支只有你一个人开发,且没有跟master合并过。)

为了便于他人阅读你的提交,也便于cherry-pick或撤销代码变化,在发起PullRequest之前,应该把多个commit合并成一个。(前提是,该分支只有你一个人开发,且没有跟master合并过。)

  这可以采用rebase命令附带的squash操作。

     结束语:看完文章的小伙伴,都差不多了解Git协作流程了吧!如果各位小伙伴还想了解更多关于这方面的知识内容,可以登陆编程学习网教育平台,里面有全面的知识还有视频讲解哦!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Git协作流程解析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Git协作流程解析

今天我们一起来了解“Git协作流程”,希望可以帮助到那些需要帮助的人。要认真的阅读哦!        协作必须有一个规范的流程,让大家有效地合作,使得项目井井有条地发展下去。"协作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项
Git协作流程解析

解析OSPF协议工作原理

  在如今的计算机网络中,当两台非直接连接的计算机需要经过几个网络通信时,通常就需要路由器。路由器提供一种方法来开辟通过一个网状连接的路径。那么路径是怎么建立的呢?路由器提供协议的任务是,为路由器提供他们建立网状网络最佳路径所需要的相互共享的路由信息。在众多的路由技术中,OSPF协议已成为目前Internet广域网和I
解析OSPF协议工作原理

ICMP协议是什么以及工作原理解析

  ICMP协议是什么以及工作原理解析。网络工程师们对网络协议一定不陌生,从专业角度定义,网络协议是计算机在网络中实现通信时必须遵守的约定,也就是通信协议。网络协议有很多,接下来编程学习网小编就来给大家介绍一个多功能的网络层协议——ICMP协议  ICMP协议是什么?  ICMP是Internet
ICMP协议是什么以及工作原理解析

为你介绍HTTP协议工作原理相关的流程

  超文本传输协议,是我们浏览网页、看在线视频、听在线音乐等必须遵循的规则。设计HTTP最初的目的是为了提供一种发布和接收html页面的方法。今天小编要给大家分享一篇教程,那就是:为你介绍HTTP协议工作原理相关的流程。  在这一篇教程里面,小编主要和大家简单的介绍一下:HTTP协议工作原理。作为WWW的基础的HTTP
为你介绍HTTP协议工作原理相关的流程
CiscoVOIPVPN2024-04-18

编程热搜

  • 华为高级工程师认证费用
      华为高级工程师认证费用是多少?华为高级工程师认证要多少钱?华为高级工程师认证是华为认证体系中用于标识个人能力在某一技术领域达到高级工程师级别的证明,认证费用为200美金,通过考试取得的证书3年有效。  华为高级工程师认证费用是必修方向和选修方向的总和,其中必修方向认证费用为300美金,选修方向认证费用为180美金。
    华为高级工程师认证费用
  • 2024年初级软考上半年考试时间安排
    初级软考每年安排两次考试,2024年初级软考上半年考试时间已公布,2024年初级软考上半年考试时间为5月25-28日。2024年初级软考上半年报名时间及入口:根据往年各省初级软考报名时间来看,2024年上半年初级软考报名时间3月份开始,具体请考生关注全国各省2024上半年软考报名时间及入口汇总表,希赛小编将及时为大家更
    2024年初级软考上半年考试时间安排
  • HCIA证书和HCIE哪个比较好?
      HCIA证书和HCIE哪个比较好?华为认证包含三个等级,分别是HCIA(华为认证网络工程师)、HCIP(华为认证网络资深工程师)、HCIE(华为认证互联网专家)认证。  HCIA(Huawei Certified ICT Associate )即华为认证ICT工程师,是华为职业认证中用于标识个人能力在某一技术领域达
    HCIA证书和HCIE哪个比较好?
  • 教你在PPT中创建好看的镜像效果
      当我们在阅读杂志书刊,或者看电影的时候常常都会看到像下图一样的原图片与图片镜像的组合效果的图片,在很多的摄影作品中也会有,我们其实也可以在PPT中轻松实现这种应用于各大媒介的图文特效技巧,不信的话我们一起来学习一下,操作过程其实并不复杂!  下面我们就开始我们的具体操作步骤了,首先第一步,我们需要先打开PowerP
    教你在PPT中创建好看的镜像效果
  • 多媒体应用设计师可以提前交卷吗
      可以。但是多媒体应用设计师提前交卷有时间限制,根据软考的考场规则,按照人力资源和社会保障部文件规定,开考5分钟后应试人员一律禁止入场。专业技术人员资格考试原则上封闭2个小时,不足2小时的全程封闭。  软考多媒体应用设计师属于专业技术人员资格考试,专业技术人员资格考试原则上封闭2个小时,不足2小时的全程封闭。  根据
    多媒体应用设计师可以提前交卷吗
  • 全国计算机二级C语言程序设计章节练习题及答案(1)
      对于备考计算机二级C语言考试的考生可以多做试题,一方面了解往年考试题型,一方面熟悉往年考点。今天编程学习网小编给大家准备了全国计算机二级C语言程序设计章节练习题及答案(1),供考生们练习。  点击查看:全国计算机二级C语言程序设计章节练习题及答案汇总  判断题  ×1.C++语言和C语言都是面向对象的程序设
    全国计算机二级C语言程序设计章节练习题及答案(1)
  • 广西2024上半年计算机软考什么时候报名?
    广西2024上半年计算机软考3月25日开始报名,具体报名时间见全国各省2024上半年软考报名时间及入口汇总表。2024上半年广西软考考试采用网络报名的方式,考生在规定的报名时间内进入中国计算机技术职业资格网,点击页面右下方的报名入口,进入全国计算机技术与软件专业技术资格(水平)考试网上报名平台,选择“广西”入口后点击进
    广西2024上半年计算机软考什么时候报名?
  • 软考可以申请退税吗
      可以。软考证书是可以抵扣个税的,按照个税6项专项附加扣除标准,在取得软考证书的当年,可以按照3600元定额扣除。  软考证书可以抵扣个税,根据国务院印发的《个人所得税专项附加扣除暂行办法》,第三章继续教育包含三条,具体内容如下:  第八条 纳税人在中国境内接受学历(学位)继续教育的支出,在学历(学位)教育期间按照每
    软考可以申请退税吗
  • win10如何正确禁用IPv6网络协议
       在Windows Vista和Server 2008开始,微软包括本地支持的IPv6(互联网协议第6版),并默认启用。IPv6是新的计算机的地址协议,最终将取代IPv4这是目前最流行的标准。win10中默认开启了对IPv6协议的支持,但是会影响到系统运行速度和磁盘占有率等。除非你的网络有IPv
    win10如何正确禁用IPv6网络协议
  • 2020年数据库系统工程师上午真题及答案解析
      2019上半年数据库系统工程师考试已结束,今天编程学习网小编为大家整理了2020年数据库系统工程师上午真题及答案解析,以便大家了解2020下半年数据库系统工程师基础知识考试真题。  软考数据库系统工程师上午考试为基础知识,编程学习网小编为大家整理了2020年数据库系统工程师上午真题,想知道答案和解析的考生可以直接进入在线题
    2020年数据库系统工程师上午真题及答案解析

目录