Git代码分支管理在项目中的实践
来源:互联网 发布:全军战备值班部队 知乎 编辑:程序博客网 时间:2024/05/20 15:59
主要分为以下四大分支:
- master
- dev
- test
- bugfix(可不用)
一、master(主分支)
当代码克隆下来后默认就是这个分支,也就是所谓的主分支,可以认为该分支是存储当前功能测试通过且可运行的正式代码,所以一般不会直接在主分支上进行开发,这个是核心分支,也就是主路径,所有最后的代码都必须合并到主路径上,如果发布到生产环境必须通过master分支进行打包,这是代码管理非常重要的一步,即使线上代码出现问题后也可以迅速通过主分支进行代码修复,保证不会出错,也保证修复的是与线上正在的运行代码同步的。
git clone xxxxxxxx.git
master的版本管理直接用tag功能即可,即通过打tag的方式表示当前可以上线的一个版本,也方便以后进行对应版本的数据查询或者比较,如v1.0.0-publish,v2.0.0-publish等
二、dev(开发分支)
开发分支是研发同学最需要关心的,所有的开发工作应该围绕dev分支进行展开,创建dev分支脚本如下:
git checkout -b dev master
dev分支在实际工作中主要有两种常用场景:
- 单个版本开发
- 多个版本并行开发
针对第一种情况,属于比较常见的情况,即开发过程中都是按顺序进行的,即1.0.0开发完成之后才会进行开发1.1.0的需求开发,1.1.0完成上线后再进行1.2.0的版本开发,针对这种,工作直接在dev分支上开展就可以了,不需要做特殊处理,因为不会产生任何干扰~~
相关操作脚本:
#切换到dev分支下进行开发git checkout dev#同步最新的代码git pull#。。。。。开发代码,各种commit,push,这里就不列了#。。。。。#开发完测试通过后合并到主干,先把本地的dev代码更新到最新,接着执行下面脚本git checkout mastergit pullgit merge --no-ff devgit push
针对第二种情况,可能在互联网公司会比较常见,在开发资源比较充足的情况下,多个版本可能同时并行,即1.1.0和1.2.0或者更多版本在同时开发,但是又想快速试水一些功能,不可能等到全部做完都上线,所以1.1.0会先发,1.2.0会在另外一个时间点发,产品经理通常会很着急,认为错过这个时间点就会损失十几亿的感觉,碎碎的忧伤,所以分支的合理管理非常重要,不然在开发过程中会显得非常混乱,如果都在dev分支上进行开发就会把没做完的功能都发线上了,这时候就更碎了~~~ git 也给我们使用feature功能模式,即功能分支,可以通过这个来划分,如下:
先创建两个feature分支,跟创建dev分支一样,不过这次是从dev分支进行创建
git checkout -b feature-1.1 devgit checkout -b feature-1.2 dev
开发1.1.0版本操作的相关脚本:
git checkout feature-1.1#又是各种commit push操作,开发完成测试通过后执行下面操作,合并代码到dev分支:git checkout devgit pull origin devgit merge --no-ff feature-1.1git push#删除本地feature分支git branch -d feature-1.1#删除远程feature分支git push origin --delete feature-1.1
开发1.2.0版本操作的相关脚本:
git checkout feature-1.2#又是各种commit push操作,开发完成测试通过后执行下面操作,合并代码到dev分支:git checkout devgit pull origin devgit merge --no-ff feature-1.2git push#删除本地feature分支git branch -d feature-1.2#删除远程feature分支git push origin --delete feature-1.2
分支切换流程图如下:
三、test(测试分支)
测试分支很明显是给测试同学使用的,主要是开发同学认为在开发分支上进行测试通过后可以合并到test分支上,提给测试同学测试,如果需要简单一点的分支管理结构可以把test分支去除,因为加了一层之后合并的操作可能会增加,不过这块可以保证合并到主干的代码都是统一由测试同学测试通过后合并,因为dev分支一直都可以添加新代码,当增加新代码后必须要测试才可以上线,所以才会产生了test分支,创建分支的脚本如下:
git checkout -b test master分支合并操作跟上面的操作脚本相似,这里面就不一一列出了,大概的执行路径如下图:
四、bugfix分支(bug修复分支)【可不用】
紧急修复线上bug的时候使用,但是一般场景的话直接在master上修复即可了,因为bug一般都是要立即解决,切个分支来做还会增加成本,所以可以不用单独切个分支出来,如果要使用的话其实也是从master上打个分支出来,修复完后直接合并到master上,分支创建脚本如下:
git checkout -b bugfix master
具体切换流程如下:
现在在项目中主要是使用dev - test -master的模式,大家也可以使用这种方式进行分支管理,让你的代码库更加有序,上面有说的不对或者写错的地方,麻烦大家在评论中指出,或者有更好的管理方法也可以一起交流~~~
参考文章:
http://www.oschina.net/news/12542/git-and-svn
http://www.ruanyifeng.com/blog/2012/07/git.html
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000
- Git代码分支管理在项目中的实践
- Git代码分支管理在项目中的http://lib.csdn.net/article/git/18691
- Git 项目分支管理
- git分支在开发项目中的使用
- Hybrid App开发git多分支代码版本管理实践
- Git 分支管理最佳实践
- Git 分支管理最佳实践
- Git 最佳实践:分支管理
- Git 分支管理最佳实践
- Git 最佳实践:分支管理
- git学习------>Git 分支管理最佳实践
- git代码分支管理说明
- 开发中的git分支管理
- git分支的管理策略最佳实践
- Rails项目中,利用Git做版本控制及分支管理实践总结
- git管理项目代码
- 【转载】Git项目管理 第3章 项目分支管理
- Git详解之十 分支管理最佳实践
- WinXP下打造自己的linux 0.11简易编译环境(原创)
- remove element
- 【二分图|最大匹配】POJ-3041 Asteroids(匈牙利算法dfs、bfs版)
- iOS 在TabViewController中设置Tab Bar,且实现自定义
- LeetCode LRU Cache (Java实现)
- Git代码分支管理在项目中的实践
- 将一组按以下规则排序:第一个数最大,第二个数最小,第三个数是剩下中最大的,第四个数是剩下中最小的,依次类推。
- python面向对象编程
- Install Composer on CentOS
- C语言日期倒计时
- JSP(三)
- OS 通知中心扩展制作入门
- 如何在面试中发现优秀程序员(转)
- 软考-活动图+时序图+用例图