作者:稻草叔叔

来源:juejin.im/post/6844903635533594632

Git 是目前最流行的源代码管理工具。为规范开发,保持代码提交记录以及 git 分支结构清晰,方便后续维护,现规范 git 的相关操作。

分支命名

1、master 分支

master 为主分支,也是用于部署生产环境的分支,确保master分支稳定性, master 分支一般由develop以及hotfix分支合并,任何时间都不能直接修改代码。

2、develop 分支

develop 为开发分支,始终保持最新完成以及bug修复后的代码,一般开发的新功能时,feature分支都是基于develop分支下创建的。

feature 分支

  • 开发新功能时,以develop为基础创建feature分支。

  • 分支命名: feature/ 开头的为特性分支, 命名规则: feature/user_module、 feature/cart_module

release分支

release 为预上线分支,发布提测阶段,会release分支代码为基准提测。当有一组feature开发完成,首先会合并到develop分支,进入提测时会创建release分支。

如果测试过程中若存在bug需要修复,则直接由开发者在release分支修复并提交。当测试完成之后,合并release分支到master和develop分支,此时master为最新代码,用作上线。

hotfix 分支

分支命名: hotfix/ 开头的为修复分支,它的命名规则与feature分支类似。线上出现紧急问题时,需要及时修复,以master分支为基线,创建hotfix分支,修复完成后,需要合并到master分支和develop分支

常见任务

增加新功能

(dev)$: git checkout -b feature/xxx # 从dev建立特性分支
(feature/xxx)$: blabla # 开发
(feature/xxx)$: git add xxx
(feature/xxx)$: git commit -m 'commit comment'
(dev)$: git merge feature/xxx --no-ff # 把特性分支合并到dev
修复紧急bug
(master)$: git checkout -b hotfix/xxx # 从master建立hotfix分支
(hotfix/xxx)$: blabla # 开发
(hotfix/xxx)$: git add xxx
(hotfix/xxx)$: git commit -m 'commit comment'
(master)$: git merge hotfix/xxx --no-ff # 把hotfix分支合并到master,并上线到生产环境
(dev)$: git merge hotfix/xxx --no-ff # 把hotfix分支合并到dev,同步代码
测试环境代码
(release)$: git merge dev --no-ff # 把dev分支合并到release,然后在测试环境拉取并测试
生产环境上线
(master)$: git merge release --no-ff # 把release测试好的代码合并到master,运维人员操作
(master)$: git tag -a v0.1 -m '部署包版本名'  #给版本命名,打Tag

日志规范

在一个团队协作的项目中,开发人员需要经常提交一些代码去修复bug或者实现新的feature。关注公众号互联网架构师,在后台回复 2T 可获取更多架构教程。

而项目中的文件和实现什么功能、解决什么问题都会渐渐淡忘,最后需要浪费时间去阅读代码。但是好的日志规范commit messages编写有帮助到我们,它也反映了一个开发人员是否是良好的协作者。

编写良好的Commit messages可以达到3个重要的目的:

  • 加快review的流程

  • 帮助我们编写良好的版本发布日志

  • 让之后的维护者了解代码里出现特定变化和feature被添加的原因

目前,社区有多种 Commit message 的写法规范。来自Angular 规范是目前使用最广的写法,比较合理和系统化。如下图:

Commit messages的基本语法

当前业界应用的比较广泛的是 Angular Git Commit Guidelines

“https://github.com/angular/angular.js/blob/master/DEVELOPERS.md#-git-commit-guidelines

具体格式为:

<type>: <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
  • type: 本次 commit 的类型,诸如 bugfix docs style 等

  • scope: 本次 commit 波及的范围

  • subject: 简明扼要的阐述下本次 commit 的主旨,在原文中特意强调了几点:

    • 使用祈使句,是不是很熟悉又陌生的一个词

    • 首字母不要大写

    • 结尾无需添加标点

body: 同样使用祈使句,在主体内容中我们需要把本次 commit 详细的描述一下,比如此次变更的动机,如需换行,则使用 |

footer: 描述下与之关联的 issue 或 break change

Type的类别说明:

  • feat: 添加新特性

  • fix: 修复bug

  • docs: 仅仅修改了文档

  • style: 仅仅修改了空格、格式缩进、都好等等,不改变代码逻辑

  • refactor: 代码重构,没有加新功能或者修复bug

  • perf: 增加代码进行性能测试

  • test: 增加测试用例

  • chore: 改变构建流程、或者增加依赖库、工具等

Commit messages格式要求

# 标题行:50个字符以内,描述主要变更内容
#
# 主体内容:更详细的说明文本,建议72个字符以内。需要描述的信息包括:
#
# * 为什么这个变更是必须的? 它可能是用来修复一个bug,增加一个feature,提升性能、可靠性、稳定性等等
# * 他如何解决这个问题? 具体描述解决问题的步骤
# * 是否存在副作用、风险?
#
# 如果需要的化可以添加一个链接到issue地址或者其它文档
关注公众号互联网架构师,在后台回复 2T 可获取更多教程。

关注微信公众号:互联网架构师,在后台回复:2T,可以获取我整理的教程,都是干货。

猜你喜欢

1、GitHub 标星 3.2w!史上最全技术人员面试手册!FackBoo发起和总结

2、如何才能成为优秀的架构师?

3、从零开始搭建创业公司后台技术栈

4、程序员一般可以从什么平台接私活?

5、37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6、滴滴业务中台构建实践,首次曝光

7、不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

8、15张图看懂瞎忙和高效的区别

9、2T架构师学习资料干货分享

别乱提交代码了,你必须知道的 Git 分支开发规范!相关推荐

  1. git分支指的是_你一定知道的Git分支模型

    原标题:你一定知道的Git分支模型 写在前面 本文不是一篇Git入门指南,也不是 Git命令行使用技巧的讲解,而是谈谈作者在过往工作中使用的几种代码版本管理工具的一些体会,同时重点讲解一下Git的分支 ...

  2. 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!

    Git是现在市面上最流行的版本控制工具,书写良好的commit message能大大提高代码维护的效率. 但是在日常开发中由于缺少对commit message的约束,导致填写内容随意.质量参差不齐, ...

  3. 小白需要知道的git命令

    小白需要知道的Git命令 git remote add origin(这里一般这样写,当然可以写别的) 之后写clone or download里复制来的东西,可以ssh或者https git rem ...

  4. git提交后的代码在哪儿_别乱提交代码了,来围观下大厂的 Git 提交规范

    点击上方"Python编程时光",选择"加为星标"第一时间关注Python技术干货! 作者:人人贷大前端技术中心 链接:https://juejin.im/po ...

  5. eclipse git提交代码_来看看大厂的Git提交规范,千万别乱提交代码哦...

    点击上方"小黄鸭编程社区",选择"星标" 作者:人人贷大前端技术中心来源:https://urlify.cn/3a6NNb git是现在市面上最流行的版本控制工 ...

  6. 工作中必须要知道的git高级用法

    1. rebase变基 问题: 工作中我们一般是从master分支拉自己的开发分支开发,如果master分支被组长合并了其他同事的开发,也就是master分支ahead你的分支,我们这时一般不能直接提 ...

  7. git获得当前分支url_笔记本拿出来!软件工程师必须要知道的Git命令语句大汇总...

    Git是什么??? 在了解Git命令语句之前,首先要先弄清楚什么是Git. Git是一个现代版的控制系统,由Linux Torvalds从2005年开始开发的一款开源项目.现如今,Git已经被大多数软 ...

  8. git分支开发练习以及创建文件提交到版本库

    学习记录(两个问题练习): 问题1: 提前编写好的三个文件: 代码: sunyu@LAPTOP-T5VO94NM MINGW64 /d/javademo (master) $ cd d:sunyu@L ...

  9. iWatch 开发 1: 你想知道的 iWatch App 开发

    使用Apple Watch,用户现在可以通过直接和不显眼的方式来访问信息.只需要抬起你的手腕,用户就可以接收和回复通知,查看基本信息等等.开发Apple Watch意味着以最直接,方便的方式向用户提供 ...

  10. 标准css属性,你一定要知道的css属性值规范

    1.如果值是0,通常都不用带单位 例如:.list{ border: 1px solid 0px; margin: 0px; } 改成:.list{ border: 1px solid 0; marg ...

最新文章

  1. Font from origin 'http://apps.bdimg.com' has been blocked
  2. centos7 docker 安装 otter 注意事项
  3. GOS系列之删除附件
  4. Winform中实现ZedGraph中曲线右键显示为中文
  5. VTK:PolyData之ExtractSelection
  6. PTA 1002 Business (35分)
  7. SAP CRM和SAP Hybris的订单修改记录
  8. php学习_与mysql的连接 2013.01.04
  9. 前端学习(2761):uni-app样式的学习
  10. 北京 | 阿里摩酷实验室 招聘 研究型实习生/社招
  11. VIO Estimator::processIMU 函数
  12. mouseover和mouseenter的区别?
  13. 链家重庆二手房爬取以及房价预测
  14. 分布式异步任务框架之Celery定义、异步任务框架特点、架构、使用场景、安装配置、基本使用、多任务结构使用、延时任务、定时任务及django中使用celery
  15. Ubuntu迅雷下载工具安装使用
  16. 宁西铁路线 宁合线 宁西铁路
  17. JAVASwing设置字体,字体大小
  18. python函数可以分为哪几类_python函数有哪几种
  19. DOC与DOCX的区别
  20. 论文中如何写mysql的介绍_论文中数据库概念设计怎么写

热门文章

  1. FreeBSD磁盘标签实例分析
  2. 保障Web服务的安全
  3. java学习——线程
  4. 国家集训队论文整理分类
  5. jquery 插件页面回到顶部
  6. Linux 下串口编程入门教程
  7. 本周小结!(二叉树系列二)
  8. poj 2182 Lost Cows 线段树!!!!
  9. 图像大小批量调整工具Image Resizer for Mac
  10. ScreenFlow for mac 录制视频的工具