Git分支与提交代码规范

简介: Git分支与提交代码规范

前言

在团队协作开发时,每个人提交代码时都会写commit message。但是每个人都有自己的书写风格,提交代码之后message五花八门,十分不利于阅读和维护。


因此,我们需要制定统一标准,促使团队形成一致的代码提交风格,更好的提高工作效率,成为一名有追求的工程师。


本规范用于描述日常研发流程中关于GitLab上代码分支使用的规则,大家共同严格遵守规范,避免出现分支管理混乱现象,保证日常的发版上线工作顺利进行。


一、分支介绍

1.1 develop分支

开发者在接到需求之后主要从事开发工作的分支。初次创建develop时,需要从main分支拉取,保持开发时代码和线上最新的代码相同。develop分支是在开发时的最终分支,具有所有当前版本需要上线的所有功能。


1.2 release分支

当develop分支已经有了本次上线的所有代码的时候,并且以通过全部测试的时候,就可以从develop分支创建release分支了,release分支是为发布新的产品版本而设计的。


通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。


在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。


比如,此次1.0.0版本所有的功能版本都已经合并到了develop上,并且所有测试都已经通过了测试,那就创建新的release分支release/v1.0.0。切换到新分支,修改最新的版本号等,不允许大的更改。


1.3 main分支(原来为master)

与线上版本保持绝对一致。当release分支测试通过,表示代码随时能够发布时,会将代码merge到main分支,并且打上tag,至此,该版本封版,所有发现的bug均视为线上bug。线上出现的bug通过hotfix分支修复。


1.4 feature分支

用于开发功能的分支,必须从最新的develop分支代码拉取。分支命名基本上是private/姓名全拼/项目名。

不强制提交到远程仓库,可以本地创建。

1.5 hotfix分支

当线上出现bug需要紧急修复时,从当前main分支派生hotfix分支。


修改线上bug,修改完成后合并回develop和main分钟。


比如,在线上v1.0.0登录功能出现问题,我从main拉取代码创建新的分支hotfix/v1.0_login,修改完成后合并到main和develop上。


二、格式及说明

2.1 格式

提交前首先写明提交的内容,格式如下:

type: subject (注意:冒号后面有英文空格)

2.2 说明

( 1 ) type的选项,只允许使用下面几个标识:


feat:新功能(feature)


fix:修补bug


docs:文档(documentation)


style: 格式(不影响代码运行的变动,空格,格式化等等)


refactor:重构(既不是新增功能,也不是修改bug的代码变动)


perf: 性能(提高代码性能的改变)


test:增加测试或者修改测试


build: 影响构建系统或外部依赖项的更改(maven,gradle,npm等等)


ci: 对CI配置文件和脚本的更改


chore:对非src和test目录的修改


revert: 撤销上一次的 commit


( 2 ) subject: commit的简短描述,不超过50


三、提交、推送、合并流程

3.1 正常开发流程

本地创建个人分支作为feature分支,格式为:private/姓名全拼/项目名。


  1. 提交之前,首先拉取develop分支代码到本地个人分支;
  2. 提交并推送到远程个人分支上;
  3. 创建merge request,合并到develop分支上。
  4. 所有任务全部自测通过后,将develop分支merge到release分支上进行测试和验证,如果存在bug直接在该分支修改并合并到develop分支,如果验证通过则准备生产上线,
  5. 上线时将release代码合并到main分支,并打tag,tag名称为“v-版本号”,从main分支打包上线。

3.2 线上紧急bug修复流程:


  1. 当发现线上bug需要紧急修复时,需要以main分支为基准创建一个hotfix分支,分支名称为“hotfix-功能点-开发人员姓名全拼”;
  2. bug修复代码直接在新建的hotfix分支上提交,commit message需要填写任务描述与具体的开发内容。测试人员直接在hotfix分支测试。
  3. 测试通过后,开发人员同时请求合并到main分支和develop分支,合并请求消息同样需要复制任务描述以及具体的开发内容。
  4. 生产上线时将hotfix代码合并到main分支,并打tag,tag名称为“v-版本号”,从main分支打包上线。


相关文章
|
28天前
|
开发工具 git
图解Git——分支的新建与合并《Pro Git》
在Git开发中,新建与合并分支是常见的操作。以实际开发为例:为实现新需求创建分支`iss53`进行开发;遇紧急Bug时,切换至线上分支创建`hotfix`修复并合并回线上分支,再切换回`iss53`继续工作。完成`iss53`后,切换到`master`合并。若出现冲突,使用`git status`查看,手动编辑解决冲突后标记为已解决并提交。图形化工具如`git mergetool`也可辅助解决冲突。
44 9
|
28天前
|
开发工具 git 开发者
图解Git——分支简介《Pro Git》
Git 分支是其核心特性之一,允许开发者从主开发线分离工作,避免干扰主线。传统版本控制系统创建分支效率低,而Git的分支创建和切换非常轻量高效。
70 9
|
2天前
|
开发工具 git 开发者
vscode+git解决远程分支合并冲突
通过这些详细步骤,您可以掌握如何使用VSCode和Git高效地解决远程分支合并冲突,提高开发效率和代码质量。希望这些内容对您的学习和工作有所帮助。
125 86
|
28天前
|
存储 项目管理 开发工具
图解Git——分支开发工作流《Pro Git》
分支开发工作流利用Git的分支功能,支持灵活的项目管理。长期分支如`master`和`develop`分别保存稳定和开发中的代码;短期主题分支用于开发单一特性或修复问题,完成后合并到主分支。此模式确保代码稳定性,支持并行开发、便于审查和灵活调整。建议维护明确的长期分支,保持主题分支短小精悍,并定期清理无用分支。配置上可保护关键分支,遵循命名规范。
54 7
|
28天前
|
存储 缓存 Java
图解Git——远程分支《Pro Git》
远程分支是 Git 中用于管理分布式协作的关键概念。远程引用指向远程仓库中的分支和标签,常用 `git ls-remote` 或 `git remote show` 查看。日常开发中,通常使用远程跟踪分支(如 `origin/main`)与远程分支交互,简化远程仓库状态的管理和使用。远程跟踪分支记录远程分支的状态,但本身只读。
27 6
|
4月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
173 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
4月前
|
开发工具 git 开发者
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
本文通过具体操作和截图,详细讲解了如何在Git中解决分支冲突问题,包括如何识别冲突、手动解决冲突代码、提交合并后的代码,以及推送到远程分支。
791 3
关于git 解决分支冲突问题(具体操作,包含截图,教你一步一步解决冲突问题)
|
5月前
|
缓存 开发工具 git
Git创建分支以及合并分支
在Git中,创建分支使用`git branch [branch_name]`,切换分支使用`git checkout [branch_name]`。修改文件后,通过`git add [file]`添加到暂存区,然后`git commit`提交到本地仓库。如果是新建分支的第一次推送,使用`git push origin [branch_name]`推送到远程仓库,之后可以简化为`git push`。合并分支时,使用`git merge [branch_name]`将指定分支的更改合并到当前分支。
143 2
Git创建分支以及合并分支
|
4月前
|
开发工具 git
Git分支使用总结
Git分支使用总结
68 1
|
5月前
|
测试技术 开发工具 git
掌握 Git 分支策略:提升你的版本控制技能
在现代软件开发中,版本控制至关重要,Git 作为最流行的分布式版本控制系统,其分支管理策略对于高效协作和代码维护尤为重要。本文介绍了几种常用的 Git 分支策略,包括主线开发模型、功能分支模型、Gitflow 工作流和 Forking 工作流,并探讨了如何根据项目需求选择合适的分支模型。通过保持 `master` 分支稳定、及时合并清理分支、使用命名规范、利用 Pull Request 进行代码审查及自动化测试等最佳实践,可以显著提升团队协作效率和软件质量。掌握这些策略将帮助开发者更好地管理代码库,加快开发流程。

相关实验场景

更多