实际项目中如何使用Git做分支管理「建议收藏」

实际项目中如何使用Git做分支管理「建议收藏」记得刚工作的时候根本不知道什么是版本管理工具,有一次和别人聊天,人家问你们公司代码用什么版本管理工具?我说啥是版本管理工具,我们一般用U盘拷贝,然后人家就顾左右而言他了。后来我知道了有个东西叫,后来又知道了还有个东西叫。所以说刚毕业的同学一定要优先进入专业的大公司,就像年轻时候应该去大城市闯两年一样,眼界以及你遇到的牛人会大大加快你以后成功的进程。本文主要是介绍一种在具体实践中使用Git来管理项目开发的一种成功的方式,其实主要思想来源于这篇文章Asuccessful…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

[版权申明] 非商业目的注明出处可自由转载
出自:shusheng007

相关文章
Git日常开发常用命令汇总

前言

记得刚工作的时候根本不知道什么是版本管理工具,有一次和别人聊天,人家问你们公司代码用什么版本管理工具?我说啥是版本管理工具,我们一般用U盘拷贝,然后人家就顾左右而言他了。后来我知道了有个东西叫SVN,后来又知道了还有个东西叫Git。所以说刚毕业的同学一定要优先进入专业的大公司,就像年轻时候应该去大城市闯两年一样,眼界以及你遇到的牛人会大大加快你以后成功的进程。

概述

本文主要是介绍一种在具体实践中使用Git来管理项目开发的一种成功的方式,其实主要思想来源于这篇文章 A successful Git branching model,网上大部分教程都是致敬这篇文章。

Git的基本使用方法

关于git的基本教程,强烈建议阅读廖雪峰老师的Git教程,对初学者非常友好。

使用Git管理项目的方式

在实际开发中如何使用Git没有一个标准答案,使用方式也是各式各样,很多基本上都是把Git当SVN来用。下面介绍的是一种经过实践的运行比较良好的管理方式。

主分支

实际开发中,一个仓库(通常只放一个项目)主要存在两条主分支:masterdevelop分支。这个两个分支的生命周期是整个项目周期。就是说,自创建出来就不会删除,会随着项目的不断开发不断的往里面添加代码。master分支是创建git仓库时自动生成的,随即我们就会从master分支创建develop分支,如下图所示。
这里写图片描述

  • master:这个分支最为稳定,这个分支代表项目处于可发布的状态。

    例如王二狗向master分支合并了代码,那就意味着王二狗完成了此项目的一个待发布的版本,项目经理可以认为,此项目已经准备好发布新版本了。所以master分支不是随随便便就可以签入代码的地方,只有计划发布的版本功能在develop分支上全部完成,而且测试没有问题了才会合并到master上。

  • develop:作为开发的分支,平行于master分支。

    例如王二狗要开发一个注册功能,那么他就会从develop分支上创建一个feature分支 fb-register(后面讲),在fb-register分支上将注册功能完成后,将代码合并到develop分支上。这个fb-register就完成了它的使命,可以删除了。项目经理看王二狗效率很高啊,于是:“二狗你顺带把登录功能也做了吧”。二狗心中暗暗骂道:日了个狗的,但是任务还的正常做,二狗就会重复上面的步骤:从develop分支上新创建一个名为fb-login的分支,喝杯咖啡继续开发,1个小时后登录功能写好了,二狗又会将这个分支的代码合并回develop分支后将其删除。

通过以上分析可以发现,我们可以使用Git hook 脚本自动发布发布新的版本,具体就是每当有代码从develop分支合并到master分支的时候,脚本就会自动触发,编译发布新的版本。

支持分支

这些分支都是为了程序员协同开发,以及应对项目的各种需求而存在的。这些分支都是为了解决某一个具体的问题而设立,当这个问题解决后,代码会合并回主分支develop或者master后删除,一般我们会人为分出三种分支。

  • Feature branches:这种分支和我们程序员日常开发最为密切,称作功能分支。

    必须从develop分支创建,完成后合并回develop分支

    如下图所示。
    这里写图片描述
    具体事例可以参考上面王二狗完成登录注册功能时的做法。

  • Release branches:这个分支用来分布新版本。

    develop分支创建,完成后合并回developmaster分支。

    这个分支上可以做一些非常小的bug修复,当然,你也可以禁止在这个分支做任何bug的修复工作,而只做版本发布的相关操作,例如设置版本号等操作,那样的话那些发现的小bug就必须放到下一个版本修复了。如果在这个分支上发现了大bug,那么也绝对不能在这个分支上改,需要Featrue分支上改,走正常的流程。

    实例:王二狗开发完了登录注册功能后决定发一个版本V0.1,那么他先从develop分支上创建一个Release 分支release-v0.1,然后二狗在这个分支上把版本号等做了修改。正准备编译发布了,项目经理说:“二狗啊,你那个登录框好像向右偏移量1个像素,你可以调一下吗?”二狗心中有暗暗骂道:日了个狗,但是。。。你们懂得,功能还的正常改。不过二狗发现这个bug特别小,对项目其他部分不造成不可预知的问题,所以直接在release分支上改了,然后愉快的发布了版本1.0.版本上线后,二狗将这个分支分别合并回了developmaster分支,然后删除了这个分支。

  • Hotfix branches:这个分支主要为修复线上特别紧急的bug准备的。

    必须从master分支创建,完成后合并回developmaster分支。

    如下图所示:
    这里写图片描述
    这个分支主要是解决线上版本的紧急bug修复的,例如突然版本V0.1上有一个致命bug,必须修复。那么我们就可以从master 分支上发布这个版本那个时间点 例如 tag v0.1(一般代码发布后会及时在master上打tag),来创建一个 hotfix-v0.1.1的分支,然后在这个分支上改bug,然后发布新的版本。最后将代码合并回developmaster分支。

实例:某天夜里二狗正在和女朋友嘿咻呢,突然项目经理打来电话:“二狗啊,线上出了个大问题,大量用户无法登录,客服电话已经被打爆了,你紧急处理一下”。二狗心中默默骂道:日了个狗,然后就爬起来去改代码了。二狗先找到master分支上tag v0.1 的地方,然后新建了hotfix-v0.1.1 分支,默默的修bug去了。经过一个多小时的奋战,终于修复了,然后二狗改了版本号,发布了新版本。二狗将这个分支分别合并回了developmaster分支后删除了这个分支。终于搞定了,回头看看床上的女票已经进入了梦乡,二狗贼心不死,上前挑逗,此刻女票将满腹怨气集于一点,使出凌空一脚将其登于床下,随后甩一枕于二狗,二狗会意,趋客厅,抱枕卧于沙发。。。

总结图

上面的讲解最后汇成一张图
这里写图片描述

总结

最后希望广大程序员不要有王二狗的悲惨遭遇,希望广大“王二狗媳妇”可以理解广大“王二狗”的不容易…

同学们又到了关注点赞的时候拉,抬起你的小手猛戳一下!有任何疑问可以评论留言,我会尽力回复的。

参考文章:A successful Git branching model

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187041.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • eclipse500错误原因解决方法_eclipse运行无法显示网页

    eclipse500错误原因解决方法_eclipse运行无法显示网页eclipse内部浏览器报错:此错误(HTTP500内部服务器错误)意味着您正在访问的网站出现了服务器问题,此问题阻止了该网页的显示修改eclipse设置即可解决:window->preferences->general->webbrowser选择使用外部浏览器即可IE浏览器设置如下:https://blog.csdn.net/txwtech/article/details…

  • matlab空间计量模型AIC和SC,空间计量模型[通俗易懂]

    matlab空间计量模型AIC和SC,空间计量模型[通俗易懂]回归分析中LMlag,LMerror后面的DFvaluefrob代表什么,哪一个是概率值?这个表的结论是所有的spatiallag都不显著,不要用spatialmodel,一般的OLS就行这一列(MI/DF这列)读下来就是Moran’sI的均值之类的东西(MI)等于-0.17,下面是各个LM检验的自由度,(LM检验是卡方分部所以有不同自由度)。第二列(value)是各个统计量的值,…

    2022年10月23日
  • 使用mysql中的concat()函数进行字符串拼接_mysql contains

    使用mysql中的concat()函数进行字符串拼接_mysql containsmysql>selectid,avatarfromtf_user;+—-+————–+|id|avatar|+—-+————–+|1|avatar_1.png||2|avatar_6.png||3|avatar_1.png||4|avatar_5.png||5|avatar…

  • ModelSim安装破解出现Unable to checkout a license.Make sure you licence file…..错误

    ModelSim安装破解出现Unable to checkout a license.Make sure you licence file…..错误说了你们可能不信,装ModelSim软件,今天整整装了一天才弄好,一直出现下面的错误。下面详细说一下解决这个问题的办法:方法一:不正面解决这个问题在FPGA做仿真的时候,可以不需要单独破解版的ModelSim,直接使用Quartus软件自带的ModelSim-Altrea安装上面两个软件,然后在仿真的时候,路径设置对就可以这个时候,你安装的ModelSim在桌面的图标你可以发现是叫ModelSim-Altrea方法二:正面解决这个问题如果你跟我一样,非要安装独立的版本,当你遇到这个问题的

  • 2020idea安装教程_3dmax2020安装失败

    2020idea安装教程_3dmax2020安装失败IDEA安装教程1、下载IDEA首先在官网下载IDEA,官网下载地址为:IDEA下载地址我这里选择的是Ultimate版本2、安装IDEA双击刚才下载好的IDEA安装包进行安装。我把安装路径改为了我在D盘选择的路径点击Next,然后点击Install进行安装安装过程安装成功3、IDEA配置启动IDEA此时需要激活,我之前申请的教育账号还可以用就直接使用的教育账…

  • 史上最详细图解快速排序的方法_快速排序的基本步骤

    史上最详细图解快速排序的方法_快速排序的基本步骤0.前言找了好多贴在都没有找到舒心的一次能看懂的文章,决定把学明白每一步全部图解出来。推荐一个博主的文章也很不错:https://blog.csdn.net/weixin_42109012/article/details/916450511.图解开始![在这里插入图片描述](https://img-blog.csdnimg.cn/e6bbdfbe97e44bbd99f99cf456c998ed.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号