【转】git在公司内部的使用实践

版本定义:

版本号使用x.x.x进行定义,第一个x代表大版本只有在项目有重大变更时更新

第二个x代表常规版本有新需求会更新
第三个x代表紧急BUG修正
一个常见的版本号类似于:0.11.10

分支定义:

  • master分支对应线上版本,上线都使用master;

  • develop是开发分支,用于生成提测分支release,始终保持最新;

  • hotfix是紧急分支,从master生成,bug修正后自动合并到master和develop并且生成tag;

  • feature是私有分支,用于开发新需求和需要较长时间的BUG修改

  • release是提测分支也即常规分支,测试并且bug修改结束后生成该版本tag,后续可以使用git show
    tagname来查看版本信息或者回滚

工程师:      clone版本库后,首先git flow
init初始化工作目录。
   开发工作流程:

  1. git flow feature start xxxxx(开始新需求)

  2. 在feature/xxxxx分支下进行开发

  3. git flow feature finish xxxxx(开发完成后等待研发经理确认可以完成时执行)

  4. git push origin develop(发布develop分支)

  • 每天工程师都需要git pull origin
    develop来更新develop分支,然后将develop分支合并到你正在开发得feature/xxxxx分支上来保持代码最新

  • 切记不能直接在develop上进行开发

常规分支debug流程:

  1. 由研发经理通知相关工程师release版本x.x

  2. git fetch

  3. git checkout -b release/x.x origin/release/x.x(拉回release版本)

  4. git pull release/x.x(更新该分支)

  5. 修改测试中发现的BUG

  6. git push origin release/vx.x(修改完后提交分支)

  7. 循环4-5

紧急debug流程:

  1. 由研发经理通知相关工程师hotfix分支名称x.x.x

  2. git fetch

  3. git checkout -b hotfix/x.x.x origin/hotfix/x.x.x(拉回hotfix分支)

  4. git pull hfx.x(更新hotfix分支)

  5. 在热修复分支下修改bug

  6. git push origin hfx.x(修改完成,提交分支)

在日常工作中不能修改master分支下得代码 研发经理:
  开发和DEBUG流程同工程师流程  
常规分支debug流程:

  1. git pull origin develop(更新develop分支为最新)

  2. git checkout develop(切换到develop分支)

  3. git flow release start x.x(生成一个release分支)

  4. 通知测试和相关得工程师分支名称

  5. git pull origin release/x.x(最终测试完成后拉回分支最新代码)

  6. git flow release finish x.x(最终修改和测试完成后,结束release版本以供发布)

  7. git push origin develo (发布最新的develop)

  8. git push origin master(发布最终得master分支)

紧急debug流程:

  1. git pull origin master(更新master分支为最新)

  2. git checkout master(切换到master分支)

  3. git flow hotfix start x.x.x(生成一个hotfix分支)

  4. 通知相关得工程师和测试人员hotfix分支名称

  5. git pull origin hotfix/x.x.x(最终测试完成后拉回分支最新代码)

  6. git flow hot fix finish x.x.x(最终修改和测试完成后,结束hot fix以供发布)

  7. git push origin master(发布最终得master分支)

在全部的流程中,工程师必须维护自己的feature分支保证代码最新,减少合并时的冲突。
研发经理必须维护release分支,将最新的hotfix都合并进去,保证代码最新,减少合并时的冲突。
在提交代码时还要注意判断对代码的修改是否是自己的,多用diff工具,多查看log,防止代码回溯.

原文来源:转自 http://zeroq.me/p/451  作者: zeroq

时间: 2024-10-12 19:51:36

【转】git在公司内部的使用实践的相关文章

git在公司内部的使用实践(转)

从2011.10月左右,开始在后台组推行git版本控制,到现在也差不多半年了,也形成了一套基于git flow的副官模式工作流程: 版本定义: 版本号使用x.x.x进行定义,第一个x代表大版本只有在项目有重大变更时更新第二个x代表常规版本有新需求会更新第三个x代表紧急BUG修正一个常见的版本号类似于:0.11.10 分支定义: master分支对应线上版本,上线都使用master: develop是开发分支,用于生成提测分支release,始终保持最新: hotfix是紧急分支,从master生

hbase 集群搭建(公司内部测试集群)

我用的是cdh4.5版本:配置文件:$HBASE_HOME/conf/hbase-env.shexport JAVA_HOME=$JAVA_HOMEexport JAVA_HOME=/home/hadoop/jdk1.7.0_51export HBASE_CLASSPATH=$HBASE_HOME/conf# Tell HBase whether it should manage it's own instance of Zookeeper or not.export HBASE_MANAGES

公司内部培训SQL Server传统索引结构PPT分享

公司内部培训SQL Server传统索引结构PPT分享 下载地址 http://files.cnblogs.com/files/lyhabc/SQLServer%E4%BC%A0%E7%BB%9F%E7%B4%A2%E5%BC%95%E7%BB%93%E6%9E%84.ppt PPT有不对的地方,多多拍砖o(∩_∩)o

关于公司内部私拉TP-Link路由器引发的血案

今天出外勤,结果中午不到,就接到报修,整个公司不能上网.我就纳了闷了,天天都好好的,怎么一下子就完了蛋了呢,而且还是全部断网,此处坚决排除外网原因. 描述:公司所有员工中午吃完饭后就再也不能上外网,包括QQ,众知,QQ不是需要通过DNS来解析的!公司所有的内网的服务器也不能连接了,网络连接显示!号,但是郁闷的是,有一个小姑娘的电脑就是可以上网. 开始排查    1.先进机房重启路由器 2.查看所有现在有交换机是还有不正常状态亮灯 3.用手机连接无线,检查问题所在 写在前面:公司内部现在以双固定I

公司内部培训AlwaysOn PPT分享

公司内部培训AlwaysOn PPT分享 下载地址: http://files.cnblogs.com/files/lyhabc/alwayson.ppt

关于公司内部DNS的整改建议

文章背景:由给leader的邮件而来,在文章末尾另加了一些补充(见FAQ).原主题:关于公司内网DNS服务器中的u-sooc.com域名调整建议 建议:将公司内部DNS服务器(Windows  Server 2008 R2)所维护的u-sooc.com域名与公网DNS服务器合并为一个,仅使用公网DNS服务器进行解析(同时提供内网解析和外网解析) 问题背景:由于公司所购买的域名是由万网提供的,并且DNS服务器也是万网的DNS服务器,万网的DNS服务器不允许其他服务器作为从服务器使用.当添加新的实际

公司内部文档安全软件coredump分析实例

系统: windows xp sp3 崩溃软件: 公司内部某文档安全软件 调试工具: windbg 反汇编工具: ida pro 5.5 介绍: 该文档安全软件是由公司内部vpn工具启动,当在vpn工具输入用户密码连接网络后,vpn工具会自动把文档安全软件启动, 但每次启动都会coredump. 由于电脑用了windbg作为实时调试器,每次启动windbg都会弹出来, 显示coredump位置 分析过程: coredump信息 (50c4.50d0): Access violation - co

国内大公司内部的 C# 编程规范

C#编程规范 修改记录 Ver. No 发版日期 编制人 批准人 修改的说明 目   录 1    前言...4 1.1     参考资料...4 1.2     词汇表...4 2    命名指南...4 2.1     大写样式...4 2.1.1      Pascal 大小写...5 2.1.2      Camel 大小写...5 2.1.3      大写...5 2.2     区分大小写...6 2.3     缩写...7 2.4     措词...7 2.5     命名Na

公司内部传递的Java技术问答集锦

1 说出Servlet的生命周期,并说出Servlet和CGI的区别 Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法. 与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁