git分支进阶

其实git除了版本控制,另外一个最突出的特点就是他的分支操作。简直 丝滑~.git也是多人协作的必备武器。 通常我们正常情况下只需要master 和 develop分支就够了。 这里我们先以这两条分支作为基准,进行一系列的操作。

开发新功能流程

这个应该属于develop分支的所有(Master分支只管稳定版). 第一步,应该创建develop分支。

git checkout -b develop

然后拷贝主分支上的内容

git rebase master

(  ̄3)(ε ̄ ), ok, 正常情况下,你的develop分支和master上的分支就一模一样了。 但是有的童鞋会有疑问,特么你为什么不用merge呢?
我就不用~ 就不用~ 就不用~
(づ ̄ 3 ̄)づ , 其实使用merge和使用rebase的区别就是,(使用mege是终极合并分支,使用的是fast-forward的模式,造成两个分支的同步,给你开发新功能造成不必要的麻烦,当然,你可以使用. git merge --no-ff master合并,就可以啦。而你如果使用这个方式的话,会造成你图谱git出现不必要的复杂度。。。而使用rebase会改变的你分支的基底~ 这样看起来舒服一点。。。)
不懂诶~ ~ ~ ::>_<::
没事,上面括号里面知识参考的,你不看根本没关系。 如果你感 性 趣的话,可以参考英文rebase讲解 | | 中文rebase讲解
所以这里我就不赘述了,继续
这时候我们就要在develop分支上开发新分支了。
现在假设我们已经做了一些改动(可能已经过去两天了).
这时候我们要把develop分支提交到远端,但在提交之前需要再同步一下master分支(为什么? 你猜~ 你也可以不同步,反正下次拉下来再同步的时候难受的是你自己)。接着使用:

git fetch origin master
git rebase master

Ok~ 如果没出什么conflict那么恭喜你,你已经学会了同步分支的流程。
另外,rebase还有一个iteractive模式,其实就是用来处理在你开发时别人提交的commit 和相关的-m参数. 这里我们不做要求,因为好麻烦, 笨宝宝不想说 (~﹃~)~zZ。
如果感兴趣的同学可以参考: 传送门
OK,最后当你develop分支开发完毕,这时候你需要切换到master分支上去合并。

git checkout master
git merge --no-ff develop

OK,如果没有conflict恭喜,已经成功.
恩,说道这里,两个分支的开发git已经基本完毕了。
(┬_┬),为什么两个分支开发起来都这么复杂。
小朋友,你知道在一些团队,他们用的是5个分支吗?
主要分支: master,develop
辅助分支: hotfix,feature,release
这里我们来介绍一个git的语法糖~git flow

git flow的开发流程

这个应该是集各种糖之大成,然你免去创建分支,删除分支,切换分支,打标签等等各种烦恼,以及...自行google
这里我只讲干货诶。
先按惯例上张图:

这个是gitflow的鼻祖做的讲解图。 看不懂吧,我一开始也看不懂,后面写写的就懂了。
我先按分支说一下他们各自的功能吧:

主要分支:

1. master: 稳定发布版(永远隐藏)
2. develop: 持续更新版(永远工作)

辅助分支:


1.feature: 同步develop开发新功能,完成后与develop合并(merge)
2. release: 当新功能版本开发完后,就可以使用release分支进行创建分支并且合并,修完bug之后,与develop和master分支进行合并
3. hotfix: 这个应该算是紧急情况吧,当线上出问题的时候,需要马上进行修复,然后再提交。 完成后,会与develop和master分支进行合并.

ok , 基本上,说了各自分支的一些基本用处。 现在我们来正式介入git flow这个神奇的语法糖。
首先,我们要安装git-flow这个命令集合。
在MAC上,我们直接可以使用:

brew install git-flow; //安装

在windows上,可以使用:

wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

直接复制贴到命令行就可以了。
git flow init
首先创建你的git 分支群,即上面说的那几个。 接下来,zsh || bash || cmd会弹出一个对话框.

像这样,闭着眼睛,一直点[Enter]就可以了。
接下来你会发现,你初始化的时候就是处在develop分支上面的.
Ok~ 正常的话,我们就可以开始进行功能的开发了。
使用git flow feature start [branchName]命令,建立你的功能分支, 之后你便可以创建一些特定功能.(他省去了,你创建分支,并rebase分支这一过程,超棒.~^_^~ )

git flow feature start headerBar

之后他会提示你一些信息,告诉你现在正在feature/headerBar分支上,然后你就可以进行一些开发...
当然,功能开发是一项长久的任务,以后你也需要不断的进行git rebase develop进行分支的更新,然后继续开发。 要知道gitflow只是一个语法糖,原生的git命令你完全都可以用的。
所以,你还可以将新建的功能分支保存到远端.

git flow feature publish feature/[branchName]
//或者使用原生的
git push origin feature/[branchName]

我倾向于用原生的...
完成开发之后一定要记着使用.git flow feature finish [branchName].
这里我们使用headerBar分支

git flow feature finish headerBar

Ok~ 它便会将你的分支与develop进行合并,然后并且删除该feature分支。 如果你不犯傻两边都改动(develop和feature分支), 应该不会出现conflict的。
满意~ #^_^#.
现在你的develop分支已经开发成熟了,想要发布一个测试版,这时候就可以使用git flow release start [tag]. 进行发布,记着打上标签(版本号). 还有,要保证这个release是你当前最稳定的版本才行。

git flow release start v0.0.1

棒~ 现在,你已经创建了一个release的0.0.1版。然后,你可以在release分支上进行最后的修改。
现在,准备工作已经基本做完,现在我要正式发布啦~~
怕拉吧~ ( ⊙ _ ⊙ )一般吧
使用git flow release finish [tag]后面跟上你创建release的指定版本号,这里我们接着使用v0.0.1

git flow release finish v0.0.1

Ok~这时候,release分支会和develop,master分支进行合并,然后被删除。 也就是,只有在release的时候,我们才能真正的接触到master分支。 这也是git-flow最让我感到震撼的, 完整的规范化,简直了~ 我爱 上它了。
还记得我们打的标记吗? 没错,他会保存在你的git仓库里。你可以使用git tag进行检查.
另外gitflow还有一个致命诱惑就是他的hotfix分支。简直啦~~~ 超级棒。
当你的master已经上线,但是突然出现一个bug的话,你可以直接在master分支上改动,但是有个问题就是,master的分支超前了develop分支,造成你版本的混乱。 所以,这里我们可以直接使用git flow hotfix start [tagName], 其中tagName是新建的一个分支,表示完成bugfix的版本号。

git flow hotfix start v0.0.2

现在,我们已经创建了一个分支hotfix/0.0.2, 而且他贴心的帮我们rebase了master内容,然后我们完成之后就可以使用git flow hotfix finish [tagName]进行hotfix的收尾工作。

git flow hotfix finish v0.0.2

OK, 然后贴心的zsh会给你一些提示信息,说明已经和master,develop分支合并,完成了bug的修复。棒~
所以,现在大多数team的都已经使用git-flow进行git的布局和管理,我们可以和如翔一般的分支管理说拜拜啦~ 虽然说是5大分支,但其实,我们的主要存在的分支依然只有develop和master分支~ 最后我们在一起回顾一下,git-flow的工作流程:

1. 创建分支: git flow init
2. 进行功能分支的开发: git flow feature start [branchName]
3. 进行功能的合并: git flow feature finish [branchName]
4. 进行发布版的准备: git flow release start [tagName]
5. 完成发布版: git flow release finish [tagName]
6. 热插拔修复bug: git flow hotfix start [tagName]
7. 完成hotfix: git flow hotfix finish [tagName]

OK~ 现在git-flow我们已经基本学会了。当然,git原本就好到无懈可击,加上git-flow的优化,简直,神一般的存在。 最后再搬一句我爱的idiom:

Blessing in disguise

前端路漫漫a ~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于c# .net爬虫

刚开始听到爬虫这两个字眼的时候感觉挺稀奇的&#xff0c;之前并没有接触过爬虫&#xff0c;正好这会手上没事&#xff0c;于是便百度了一下。 1.网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff0c;在FOAF社区中间&#xff0c;更经常的称为网页追逐者&am…

【Pix4d精品教程】Pix4d中央子午线细化设置(测区跨两个分带)

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 航测内业中,在自由空三结束之后,需要导入像控点,进而去刺像控点。但是当测区跨两个分带的时候(如测区正好处在3度带105和108中间),像控点可能距离靶标点很远,给刺点带来了很大难度。怎样解…

Failed:(13: Permission denied)导致访问浏览器出现Nginx 500 Internal Server Error

1 、问题 我在部署nginx反向代理服务器的时候&#xff0c;nginx.conf文件都配置好了&#xff0c;但是我在浏览器里面输入域名的时候&#xff0c;提示Nginx 500 Internal Server Error 2、分析 我们需要找到nginx输出错误日志的文件&#xff0c;在nginx.conf里面我们可以看到错…

MAUI与Blazor共享一套UI,媲美Flutter,实现Windows、macOS、Android、iOS、Web通用UI

1. 前言距离上次发《MAUI初体验&#xff1a;爽》一文已经过去2个月了&#xff0c;本计划是下半年或者明年再研究MAUI的&#xff0c;现在计划提前啦&#xff0c;因为我觉得MAUI Blazor挺有意思的&#xff1a;在Android、iOS、macOS、Windows之间共享UI&#xff0c;一处UI增加或者…

dns 报文格式

最近学习了下DNS的格式&#xff0c;发现很多内容都是转载自同一个而且说的不是很清楚&#xff0c;特再整理下具体可以查看RFC1035 http://www.ietf.org/rfc/rfc1035.txt有详细的解释对于英语理解不是很好和懒得看这么长的可以看下本文首先是DNS数据帧的格式-------------------…

【Pix4d精品教程】Pix4d修编正射影像DOM的两种方法案例详解

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) DOM修编前: DOM修编后: 文章摘要: Pix4d内业数据处理通常会生成点云、DSM和DOM等产品,DSM经过精编可以生成精准的DEM,而DOM一般情况下,存在比如房屋边缘被拉花,或者存在噪点的情况

终于找到了,开源的Vue3+.NET6通用管理后台!

据说80%的.NET项目都是管理后台&#xff0c;然而能用上Vue3.NET6的管理后台并不多见。这里分享一套Vue3 Axios TS Vite ElementUI Plus .NET 6 WebAPI JWT SqlSugar的前后端分离架构的通用管理后台源码数据库脚本&#xff0c;还有与之配套录制的一组视频教程&#xff0c;全部打…

【Pix4d精品教程】Pix4d模型成果导出OSGB并加载OSGB到EPS进行三维测图完美案例教程

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 在垂直摄影中,Pix4d也可以生成漂亮的三维模型,并导出为OSGB,加载到EPS进行三维测图。首先来看生成的三维格网纹理和EPS三维模型加载效果。 Pix4d生成的三维格网纹理: EPS加载OSGB模型效果: 文…

Android实现ListView(1)

昨天有个朋友问我Android ListView列表视图&#xff0c;遇到了点错误&#xff0c;今天我给大家演示&#xff0c;具体实现见图&#xff1a; 1&#xff1a;创建一个item布局layout/item.xml 2&#xff1a;创建一个ListViewActivity类&#xff0c;但是必须继承ListActivity&#x…

WolframAlpha 的使用

WolframAlpha 1. 求解复杂方程组 ab−4abc2ac1直接点开网站&#xff0c;在输入框中输入&#xff0c;ab-4;abc2;ac1;&#xff08;逗号分割开来&#xff09;&#xff0c; 转载于:https://www.cnblogs.com/mtcnn/p/9423087.html

聊聊 C# 中的 Composite 模式

‍写在前面 Composite组合模式属于设计模式中比较热门的一个&#xff0c;相信大家对它一定不像对访问者模式那么陌生&#xff0c;毕竟谁又没有遇到过树形结构呢。不过所谓温故而知新&#xff0c;我们还是从一个例子出发&#xff0c;起底一下这个模式吧。一个简单例子 设想我们…

140种Python标准库、第三方库和外部工具都有了

导读&#xff1a;Python数据工具箱涵盖从数据源到数据可视化的完整流程中涉及到的常用库、函数和外部工具。其中既有Python内置函数和标准库&#xff0c;又有第三方库和工具。 这些库可用于文件读写、网络抓取和解析、数据连接、数清洗转换、数据计算和统计分析、图像和视频处理…

开源项目【zheng】搭建流程

2019独角兽企业重金招聘Python工程师标准>>> 搭建过程 项目地址 https://gitee.com/shuzheng/zheng这两篇写的比较详细的搭建过程&#xff0c;结合一下就没什么问题了。 https://my.oschina.net/yzuzhang/blog/1538555http://www.jianshu.com/p/b2fb42e17b581.JDK 1…

简述HTML DOM及其节点分类

在JavaScript中&#xff0c;document这个对象大家一定很熟悉&#xff0c;哪怕是刚刚开始学习的新人&#xff0c;也会很快接触到这个对象。而document对象不仅仅是一个普通的JavaScript内置对象&#xff0c;它还是一个巨大API的核心对象&#xff0c;这个巨大的API就是DOM&#x…

【CC精品教程】任务二:导入像控点、差分POS,空三平差权重设置,提交自由空三

《无人机航空摄影测量精品教程》合集目录(Pix4d、CC、EPS、PhotoScan、Inpho) 【CC精品教程】任务一:CC新建工程、添加照片、相机参数设置、选择坐标系统 本任务接着上一个任务,继续完成CC项目作业,主要内容有:导入像控点、选择空间参考系统,导入差分POS,空三平差权重设…

WPF 基础控件之 TabControl样式

其他基础控件1.Window2.Button3.CheckBox4.ComboBox5.DataGrid 6.DatePicker7.Expander8.GroupBox9.ListBox10.ListView11.Menu12.PasswordBox13.TextBox14.RadioButton15.ToggleButton16.Slider 17.TreeView TabControl 实现下面的效果1&#xff09;TabControl来实现动画&…

两个数值交换位置

2019独角兽企业重金招聘Python工程师标准>>> 先说非计算机专业都能理解的。 int a 10; int b 20; 方法一&#xff1a; int c a; a b; b c; System.out.println("a"a",b"b); 方法二&#xff1a; a a b; b a - b; a a - b; System.out…

教你如何在Android 6.0上创建系统悬浮窗

郭霖大神的文章:http://mp.weixin.qq.com/s?__bizMzA5MzI3NjE2MA&mid2650235949&idx1&sn0f7eded67f834d38b02f8872768cb68a&scene0#wechat_redirect今天周二&#xff0c;又该跟大家分享由我执笔的文章了。从之前我写的deep links、通知栏微技巧这两篇文章中&a…

官宣.NET 7 预览版5

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;12分钟)今天我们发布了 .NET 7 预览版 5。.NET 7 的这个预览版包括对通用数学的改进&#xff0c;方便了 API 作者&#xff0c;使其更轻松&#xff0c;一个新的 ML.NET 文本分类 API&#xff0c;增加了最先进的深度学习…

[转]Android产品研发(十九)

转载请标明出处&#xff1a;一片枫叶的专栏 上一篇文章中我们讲解了webview中问题集锦&#xff0c;讲解了webview的性能优化、webview种入Cookie信息、activity退出的时候清除webview信息报错、如何通过java代码和js代码相互交互、webview如何下载文件以及腾讯的X5浏览服务等知…