Git操作规范(个人见解)

简介: Git操作规范(个人见解),每个公司都要有规矩,才能保证稳定的运行,所以,代码提交也要有规矩,不是吗

一、主要分支介绍


master:正式版本;线上运行版本;

dev:最新的下次发布状态,包含测试中的新功能,可能存在bug;

feature:该分支一般用来表示开发新功能;一般情况下feature生命周期不超过一周。

bugfix:该分支主要用于修补master分支上出现的问题,即线上突发问题。

二、常用操作步骤


1. 开发新功能

  1. 基于dev分支创建一个新的feature分支,在feature分支上进行开发
  2. 开发完成后,合并featrue分支到dev分支上,测试人员开始测试。
* 此处合并feature到dev分支上,建议提交 Pull Request 并指定reviews进行Code Review后,使用Github平台能力进行合并
* Code Review的原则:主要review代码规范,业务逻辑次要
  1. 测试完成后,合并dev分支到master分支,并删除feature分支。
* 向master分支合并代码,原则上必须有Teambition对应的迭代版本号;
* 向master分支合并代码,添加标签,例如[Ver1.1.1.5 登录功能改造]
* 向master分支合并代码,依然建议采用 Pull Request 的形式,而不是直接分支合并的方式。

2. 修复线上BUG

  1. 基于master分支创建bugfix分支,在bugfix分支上排查并修复bug;
  2. 修复完成后,合并bugfix到master分支上,开始测试;
* 若此时dev和master完全一致,则先合并到dev分支验证无误后合并到master
* 若此时dev有更超前的功能在验证中,为了避免因为修复bug而把其他暂不需要上线或暂不满足上线条件的功能一起上线,
  因此bugfix直接合并到master分支,通过本地模拟或正式环境验证等方式,进行测试
  1. 测试无误后,dev拉取master代码,修复dev上的同个问题,继续其他功能开发,最终删除bugfix分支。

3. 合并冲突

  1. feature合并到dev遇到冲突时,首先将dev合并到本地feature分支
* Github平台执行Pull Request时,会先检测是否满足合并条件,若有冲突也会给予提醒
* 该冲突产生的原因大概率为:其他开发人员更早地提交了其他feature功能,且两者都存在对共同文件的修改。
  1. 在本地将冲突文件人工合并后,再次提交解决冲突后的文件(此时该文件已包含该feature最新功能和dev最新功能)
  2. 此时feature已满足合并dev的条件(Pull Request中也会显示为绿色按钮可合并)

三、实操

约有三种方式执行上述流程,推荐指数为 3 > 2 > 1


1. 人工操作

  • 创建feature和bugfix分支均为人工命名、人工创建。
  • 从dev和master向下合并均人为控制合并
  • 向dev和master合并均采用Pull Request形式

2. git-flow命令行

Mac系统安装git-flow
brew install git-flow

//先将远程仓库克隆到本地。
git clone <project_url>

//初始化Gitflow配置
git flow init

//新功能开始开发前,需准备好开发分支。
git flow feature start <feature_name>
实质上等价于 git checkout -b feature/<feature_name> develop

在本地开发完成新功能并commit后,需要将本地代码push到远程仓库。
git flow feature publish <feature_name>
如果已经执行过publish后又有新的代码需push,再次执行将报错,因为它始终会试图创建一个远程分支。
此时需执行正常的push命令git push origin

当功能开发完毕后就将进入测试阶段,此时需将一个或多个feature分支统一合并到develop分支。
git flow feature finish <feature_name>
这行指令做了三件事。
①切换到develop分支;②合并代码到develop分支;③删除本地feature/<feature_name>分支。
此步骤也可采用人工提交Pull Request的方式执行,便于Code Review

3. SourceTree可视化工具

此种方式最为推荐,操作简单明了。

  1. 初始化仓库,顶部菜单栏仓库,选择git flow

  1. 开发新功能 / 修复Bug

  1. 完成功能开发

  1. 发布release版本

四、其他规范


  1. 原则上,禁止在dev分支和master分支上直接修改代码;
  2. feature 分支命名一般为 功能名称,此处约定为feature/功能姓名日期,例如feature/login_xt_20210130
  3. commit message尽可能通俗地描述功能,不允许出现过于简短或无意义的描述,例如”update”、“部分更新”、”暂时提交”等。

五、待改善方面


  1. release分支的使用,目前dev担任了测试版本和发布版本的2个角色。
  2. fork的形式,为了避免多人对主仓库的直接操作,每个开发人员可将主仓库fork到个人仓库一份,然后将单独将主仓库添加为源。(此时该仓库拥有2个源),主仓库源只能向下拉取,向主仓库合并代码采用Pull Request形式。
  3. 标签签名的使用,即为标签添加详细的修改内容介绍,类似备注信息。

六、参考资料


https://github.com/petervanderdoes/gitflow-avh

git-flow 备忘清单

Gitflow 使用最强指北

GitHub Flow & Git Flow 基于Git 的两种协作开发模式 - sloong - 博客园

目录
相关文章
|
3月前
|
消息中间件 小程序 Java
【规范】看看人家Git提交描述,那叫一个规矩
本文通过IDEA中的Git描述规范插件【git commit message helper】,介绍了Git提交描述的规范流程,强调了团队开发中统一标准的重要性,并通过实例展示了规范的提交记录如何提高代码管理和维护效率。最后,文章提供了几个实用的Git提交描述案例,帮助读者更好地理解和应用这些规范。
83 0
【规范】看看人家Git提交描述,那叫一个规矩
|
3月前
|
敏捷开发 小程序 持续交付
【规范】Git分支管理,看看我司是咋整的
本文介绍了Git分支管理规范的重要性及其在企业中的应用。通过规范化的分支管理,可加速团队协作、确保代码质量、维护主分支稳定,并支持敏捷开发。文中详细描述了主分支(如master、develop)和辅助分支(如feature、hotfix)的作用,并提供了实际开发流程示例,包括开发前、开发中、提测、预生产和部署上线等阶段的操作方法。旨在帮助团队提高效率和代码质量。
189 0
【规范】Git分支管理,看看我司是咋整的
|
3月前
|
开发工具 git
Git——commit的提交规范
Git——commit的提交规范
106 4
|
3月前
|
JavaScript 测试技术 开发工具
Git 分支设计规范
Git 分支设计规范
197 11
|
3月前
|
存储 测试技术 开发工具
企业Git 规范的必要性-阿里云开发者社区
既然认同需要一份 Git 规范,那么这个规范需要规范哪些内容,解决哪些问题。
|
3月前
|
监控 程序员 开发工具
如何规范Git提交-参考阿里云开发者社区
这篇文章分享了如何规范Git提交,介绍了commit message的格式规范,并通过webhook监控机制来确保代码提交的规范性,从而提高研发效率和代码维护质量。
|
3月前
|
开发工具 git
Git——简单的分支规范
Git——简单的分支规范
42 0
|
4月前
|
测试技术 开发工具 git
git 提交规范
git 提交规范
172 2
|
4月前
|
前端开发 测试技术 开发工具
|
5月前
|
开发工具 git
idea的git reset current branch to here操作详解
idea的git reset current branch to here操作详解
593 1