git使用资料: https://github.com/peak-c/my-git

公司内部使用开发规范:

一. 代码库介绍

  1. 个人开发库(git@gitlab.adrd.sohuno.com:spero/xxx_spero.git)
    master:个人主线,始终与发布库的master保持同步。
    feature:功能分支,在master上创建,可以根据需要创建多个feature分支,分支名称可以自定义。
  2. 公共发布库(git@gitlab.adrd.sohuno.com:spero/spero.git)
    master:发布库主线,对运维发布的上线代码分支,内容来自release分支的合并。
    release:对测试发布的临时分支,发布人员每周二合并各个feature分支,并对外发布,上线完成后,删除该分支。

二. Git工作流

  1. 开发新功能
    首先更新自己的master(拉取发布库master代码),保证是线上的最新代码。然后在master之上创建一个feature分支进行开发,并及时将提交push到个人远端库。
    一个开发周期完成后,发布人员在发布库创建一个release分支,并将要提交测试的各个feature分支进行合并,解决冲突,并打上功能标签。
    测试人员从发布库拉取标签进行测试。
    测试完成后(以见到测试报告为准),发布人员将release分支合并到master分支,并提交运维进行上线。
  2. 测试过程修复bug
    在发布库的release分支之上,创建一个修复bug分支,完成后打上bug修改标签,并合并的release,提交测试人员复测。
  3. 线上紧急修复bug
    在发布库上,用线上出问题的标签,创建一个hotfix分支,修复bug。完成后打上bug修复标签,并将该hotfix分支提交测试。
    测试验证完成后,合并到master分支,同时合并到release分支,然后删除该hotfix分支。
    把修复后的新标签提交运维上线。
  4. 新需求紧急上线
    可以按第三条线上紧急修复bug的流程,但是标签要打上功能标签。
  5. 并行测试
    通常情况下,每个开发周期结束只发布一个测试版本(release),特殊情况,允许并行发布多个测试版本(release1, release2……)。
    当某个release版本测试完成并上线后,发布人员把该版本同时合并到其他剩余版本中,如有冲突,解决冲突并打上新的标签,并告知相关测试人员影响范围,进行复测。如果两个release要同时发布上线,再创建一个新的release分支,合并这两个分支,进行提测并上线。
  6. 新加入成员获取代码
    新加入成员从发布库的master主线拉取代码。
    如果要接替其他人员的开发需求,可以通过对方的个人库clone的方式获取对方最新代码。

三. 标签规范

  1. 命名规范
    标签统一以小写v开头的四位数字命名,如v1.0.10.1。
    第1位代表项目在整体功能和设计上有重大的改变。
    第2位代表项目在局部功能和设计上有了较大的改变。
    第3位代表项目添加了一个新功能。
    第4位代表项目在当前功能之上做了几次变动,主要是bug的修复。
  2. 创建规则
    在发布release版本时,由发布人员创建功能性标签,也就是确定标签的前三位。
    bug修复人员在该标签的基础上,每修改一次bug,打一次标签,标签号第4位自动加1。
  3. 分支命名规则
    release_xxxx:测试分支。
    hotfix_xxx:紧急修复线上bug分支,包括紧急加塞需求,但是在打标签时注释中要描述清楚。

四.注意事项

  1. 每次提交的注释尽量写的详细完整,建议使用中文注释,大家统一使用utf8的编码。
  2. 创建的标签也要写注释,写清楚该标签的功能或者修复的问题。
  3. 提交代码前,自己必须先做diff检查,尽量做到最小改动,不提交无关紧要的东西。
  4. 发布库的release分支只能用于修复bug,禁止在上面添加新功能,而且每次修复完bug提交测试前都要打新标签。
  5. 多人在一个release分支上修复bug时,要基于这个release分支创建一个新的分支,修复完成后,再合并到原来的release分支上。
  6. 禁止在发布库的master上直接push代码或者标签,master的内容只能是来自于release分支的合并。
  7. 开发人员在创建feature分支时,一定要保证自己的master和发布库的master一致。
  8. 在其他机器上提交代码时,要记得修改本地的global_config,保证能找到代码提交的作者。
 

git 使用规范的更多相关文章

  1. Git 使用规范流程

    Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 团队开发中,遵循一个合 ...

  2. 【转】【阮一峰的网络日志】Git 使用规范流程

    作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是Th ...

  3. Git 使用规范流程(转)

    团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是ThoughtBot 的Git使用规范流程.我从中 ...

  4. 利用shell脚本生成CHANGELOG.md(包含git提交规范)

    前言 我们经常看到github上面有很多CHANGELOG.MD包含版本的更新信息,如果我们的git提交能遵循一定的规范,那么使用gitlog就能很方便的生成它 生成结果  shell脚本 http ...

  5. 最全面的Git 使用规范装逼指南[转载]

    <!DOCTYPE html> <script type="text/javascript"> window.logs = { pagetime: {} } ...

  6. git 提交规范

    git 提交规范 前言 无规矩不成方圆,编程也一样. 如果你有一个项目,从始至终都是自己写,那么你想怎么写都可以,没有人可以干预你.可是如果在团队协作中,大家都张扬个性,那么代码将会是一团糟,好好的项 ...

  7. Git 使用规范流程【转】

    转自:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清 ...

  8. [Git ] Git 使用规范流程

    reference : http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重 ...

  9. Git(三):Git 使用规范流程

    转:http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人 ...

  10. Git使用规范流程(转载)

    作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是Th ...

随机推荐

  1. 流媒体 5——MPEG声音

    1. 听觉系统的感知特性: MPEG声音的数据压缩和编码不是依据波形本身的相关性和模拟人的发音器官的特性,而是利用人的听觉系统的特性来达到压缩声音数据的目的,这种压缩编码称为感知声音编码. 许多科学工 ...

  2. POJ-3080 Blue Jeans---字符串+暴力

    题目链接: https://vjudge.net/problem/POJ-3080 题目大意: 找最长的公共字串(长度>=3),长度相同就找字典序最小的 解题思路: 枚举第一个串的所以子串,处理 ...

  3. hdu-1874 畅通工程续---模板题

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1874 题目大意: 求起点到终点的最短距离 解题思路: 注意重边,其他的就是模板 #include&l ...

  4. oc语言特性

    It’s a superset of the C programming language and provides object-oriented capabilities and a dynami ...

  5. 一、Web 如何工作的

    平常我们在浏览器中输入一个网址,随即看到一个页面,这个过程是怎样实现的呢?下面用一幅图来说明: 整个流程如下: 1.域名解析  浏览器会解析域名对应的IP地址 PS:DNS服务器的知识 2.建立TCP ...

  6. 【BZOJ1087】[SCOI2005] 互不侵犯King(状压DP)

    点此看题面 大致题意: 在\(N×N\)的棋盘里面放\(K\)个国王,使他们互不攻击,共有多少种摆放方案(国王能攻击到它周围的8个格子). 状压\(DP\) 一看到这道题我就想到了经典的八皇后问题,但 ...

  7. 优化通过redis实现的一个抢红包流程【下】

    上一篇文章通过redis实现的抢红包通过测试发现有严重的阻塞的问题,抢到红包的用户很快就能得到反馈,不能抢到红包的用户很久(10秒以上)都无法获得抢红包结果,起主要原因是: 1.用了分布式锁,导致所有 ...

  8. Python求包含数字或字母最长的字符串及长度

    一.求包含数字或字母最长的字符串及长度 org = 'ss121*2222&sdfs2!aaabb' result = [] #保存最终要输出的字符串 result_temp = [] #保存 ...

  9. 【Python全栈-CSS】background背景

    background背景 一.背景图片 background-image: url("img/num.png"); background-position-x: -200px ; ...

  10. CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第十节

    原文链接 第十节:CUDPP, 强大的数据平行CUDA库Rob Farber 是西北太平洋国家实验室(Pacific Northwest National Laboratory)的高级科研人员.他在多 ...