Git 最佳实践规范

Git 分支的命名约定

当我们使用代码版本控制时,我们应该遵循的主要良好实践之一是为分支、提交、拉取请求等使用清晰且描述性的名称。确保所有团队成员的简洁工作流程至关重要。除了提高生产力之外,记录项目的开发过程还可以简化团队合作。通过遵循这些做法,您很快就会看到好处。

基于此,社区创建了一个您可以在项目中遵循的分支命名约定。以下项目的使用是可选的,但它们可以帮助提高您的开发技能。

  1. 小写:分支名称不要使用大写字母,坚持小写;

  2. 连字符分隔:如果您的分支名称由多个单词组成,请用连字符分隔它们。遵循烤肉串惯例。避免 PascalCase、camelCase 或 Snake_case;

  3. (az, 0-9):分支名称中仅使用字母数字字符和连字符。避免使用任何非字母数字字符;

  4. 请不要使用连续的连字符(–)。这种做法可能会令人困惑。例如,如果您有分支类型(例如功能、错误修复、修补程序等),请改用斜杠 (/);

  5. 避免以连字符结尾分支名称。这是没有意义的,因为连字符分隔单词,并且末尾没有单词可以分隔;

  6. 这个做法最重要:使用描述性的、简洁的、清晰的名称来解释分支上做了什么;

分支名称错误

  • fixSidebar
  • feature-new-sidebar-
  • FeatureNewSidebar
  • feat_add_sidebar

正确的分支名称

  • feature/new-sidebar
  • add-new-sidebar
  • hotfix/interval-query-param-on-get-historical-data

分支名称约定前缀

有时分支的目的并不明确。它可以是新功能、错误修复、文档更新或其他任何内容。为了解决这个问题,通常的做法是在分支名称上使用前缀来快速解释分支的用途。

  • feature:它传达了将要开发的新功能。例如,feature/add-filters;

  • release:用于准备新版本。该前缀release/通常用于在合并来自分支主服务器的新更新以创建版本之前执行诸如上次触及和修订之类的任务。例如,release/v3.3.1-beta;

  • bugfix:它表示您正在解决代码中的错误,并且它通常与问题相关。例如,bugfix/sign-in-flow;

  • hotfix:与bugfix类似,但它与修复生产环境中存在的严重错误有关。例如,hotfix/cors-error;

  • docs:编写一些文档。例如,docs/quick-start;

如果您正在使用任务管理工作流程,例如 Jira、Trello、ClickUp 或任何可以创建用户故事的类似工具,则每张卡片都有一个关联的编号。因此,通常在分行名称的前缀上使用这些卡号。例如:

  • feature/T-531-add-sidebar

  • docs/T-789-update-readme

  • hotfix/T-142-security-path

提交消息

让我们来谈谈提交消息。不幸的是,很容易找到带有“添加了很多东西”或“皮卡丘,我选择你”之类的提交消息的项目…是的,我曾经发现一个项目,其中提交消息与神奇宝贝战斗有关。

提交消息在开发过程中非常重要。创造一段美好的历史将在你的旅程中给你很多帮助。与分支一样,提交也有社区创建的约定,您可以在下面了解:

提交消息包含三个重要部分:主题、描述和页脚。提交的主题是必需的,它定义了提交的目的。描述(正文)用于为提交的目的提供额外的上下文和解释。最后是页脚,通常用于元数据,例如分配提交。虽然同时使用描述和页脚被认为是一种很好的做法,但这不是必需的。

在消息行中使用祈使句。例如:

Add README.md✅;
Added README.md❌;
Adding README.md❌;

消息行的第一个字母大写。例如:

Add user authentication✅;
add user authentication❌;

不要以句号结束消息行。例如:

Update unit tests✅;
Update unit tests.❌;

消息行限制在50个字符以内,即清晰、简洁;

将正文包裹在72 个字符处,并将消息与空行分隔开;

如果您的提交正文有多个段落,请使用空行将它们分开

如有必要,使用项目符号而不是仅使用段落;

常规提交

“常规提交规范是基于提交消息的轻量级约定。它提供了一组简单的规则来创建显式提交历史记录。”

以下引用来自Conventional Commit 的官方网站。该规范是社区中提交消息最​​常用的约定。

结构

<type>[optional scope]: <description>

[optional body]

[optional footer(s)]

提交类型

我们要研究的第一个结构是提交类型。它提供了有关此提交中所做操作的清晰上下文。您可以在下面看到提交类型列表以及何时使用它们:

  • feat:引入新功能;
  • fix:修复软件错误;
  • refactor:用于代码更改,保留其整体功能;
  • chore:不影响生产代码的更新,涉及工具、配置或库调整;
  • docs:对文档文件的添加或修改;
  • perf:代码更改提高性能;
  • style:与代码呈现相关的调整,例如格式和空白;
  • test:测试的包含或修正;
  • build:影响构建系统或外部依赖项的修改;
  • ci: CI 配置文件和脚本的更改;
  • env:描述 CI 流程中配置文件的调整或添加,例如容器配置参数。

范围

范围是一种结构,可以在提交类型之后添加以提供额外的上下文信息:

  • fix(ui): resolve issue with button alignment

  • feat(auth): implement user authentication

详情

提交消息的正文提供了有关提交引入的更改的详细说明。它通常添加在消息行后面的空白行之后。

例子:

Add 添加新功能来处理用户身份验证。

此提交引入了一个新模块来管理用户身份验证。它包括
用户登录、注册和密码恢复功能。

页脚

提交消息的页脚用于提供与提交相关的附加信息。这可以包括诸如谁审查或批准了变更之类的详细信息。

例子:

Signed-off-by: John <john.doe@example.com>
Reviewed-by: Anthony <anthony@example.com>

重大改变

指示提交包含可能导致兼容性问题或需要修改相关代码的重大更改。您可以BREAKING CHANGE在页脚中添加或包含!在类型/范围之后。

使用常规提交的提交示例

chore: add commitlint and husky
chore(eslint): enforce the use of double quotes in JSX
refactor: type refactoring
feat: add axios and data handling
feat(page/home): create next routing
chore!: drop support for Node 18

包含消息、正文和页脚:

feat: add function to convert colors in hexadecimal to rgba

Lorem Ipsum is simply dummy text of the printing and typesetting industry.

Lorem Ipsum has been the industry's standard dummy text ever since the 1500s.

Reviewed-by: 2
Refs: #345

引用

  • https://www.conventionalcommits.org
  • https://medium.com/@abhay.pixolo/naming-conventions-for-git-branches-a-cheatsheet-8549feca2534
  • https://se-education.org/guides/conventions/git.html
  • https://cbea.ms/git-commit/ https://blog.geekhunter.com.br/o-que-e-commit-e-como-usar-commits-semanticos/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/578467.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

3122.使矩阵满足条件的最少操作次数

周赛第三题,知道要用动态规划,但是不知道怎么回到子问题 显然根据题意我们需要让每一列都相同,但是相邻列不能选择同一种数字,观察到数据nums[i]介于0-9,我们就以此为突破口. 首先我们用count[n][10], count[i][j]记录第i1列值为j的元素个数,转移方程如下: dfs(i,pre) max(dfs…

根据标签最大层面ROI提取原始图像区域

今天要实现的任务是提取肿瘤的感兴趣区域。 有两个文件&#xff0c;一个是nii的原始图像文件&#xff0c;一个是nii的标签文件。 我们要实现的是&#xff1a;在标签文件上选出最大层面&#xff0c;然后把最大层面的ROI映射到原始图像区域&#xff0c;在原始图像上提裁剪出ROI…

6.模板初阶

目录 1.泛型编程 2. 函数模板 2.1 函数模板概念 2.2函数模板格式 2.3 模板的实现 2.4函数模板的原理 2.5 函数模板的实例化 3.类模板 1.泛型编程 我们如何实现一个 交换函数呢&#xff1f; 使用函数重载虽然可以实现&#xff0c;但是有一下几个不好的地方&#xff1a; …

(学习日记)2024.04.26:UCOSIII第五十节:User文件夹函数概览(uC-CPU文件夹)

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

docker容器技术篇:集群管理实战mesos+zookeeper+marathon(二)

docker集群管理实战mesoszookeepermarathon&#xff08;二&#xff09; 一 实验环境 操作系统&#xff1a;centos7.9 二 基础环境配置以及安装mesos 安装过程请点击下面的链接查看&#xff1a; 容器集群管理实战mesoszookeepermarathon&#xff08;一&#xff09; 三 安装…

WPF 资源基础

动态资源/静态资源 UI代码 <Window x:Class"WpfApp1.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d"http://schemas.microsoft.com/ex…

leetcode_37.解数独

37. 解数独 题目描述&#xff1a;编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请参考…

我教你如何可翻页电子画册

​电子画册是一种创新的方式&#xff0c;可以将传统的纸质画册转化为数字化的形式&#xff0c;并且具备翻页的功能。它不仅可以提供更好的阅读体验&#xff0c;还可以方便地分享给他人。 1.选择制作工具&#xff1a; 有许多在线平台和软件可以帮助你制作电子画册&#xff0c;比…

海康大华摄像头rtsp在网页中播放

一.项目说明 摄像头视频推流实现 支持rtsp&#xff1b;rtmp; 摄像头在浏览器中播放实现 内包含资源和对于的部署方案 资料中有详细部署资料和对于的api接口&#xff0c;支持二次开发。 二.项目实现效果 三.下载地址 下载地址&#xff1a;http://www.gxcode.top/code

【春 联---turtle海龟画图】

春联 又称"春贴"、"门对"、"对联"&#xff0c;是过年时所贴的红色喜庆元素"年红"中一个种类。它以对仗工整、简洁箱巧的文字描绘美好形象&#xff0c;抒发美好愿 望&#xff0c;是中国特有的文学形式&#xff0c;是华人们过年 的重要习…

pyqt 动态更换表头和数据

目录 pyqt 动态更换表头和数据代码 效果图&#xff1a; pyqt 动态更换表头和数据代码 from PyQt5.QtGui import QColor, QBrush from PyQt5.QtWidgets import QApplication, QTableWidget, QVBoxLayout, QWidget, QPushButton, QTableWidgetItemclass Example(QWidget):def _…

C语言项目实战——扫雷

目录 1.前言 2.完整流程 2.1规划书 2.2代码部分 2.2.1文件的结构设计 2.2.2变量的创建 2.2.3菜单的基本实现 2.2.4初始化期棋盘 2.2.5输出完整棋盘 2.2.6埋雷的实现 2.2.7查询周围雷的数量 2.2.8扫雷的实现 2.2.9完整代码 3.总结 1.前言 哈喽大家好吖&#xff0c;今…

实力认可!盘古信息荣获软件行业五项殊荣,以IMS驱动新质生产力发展

4月24日&#xff0c;第三届中国软件行业协会发展大会在北京盛大召开&#xff0c;众多软件领域的佼佼者齐聚一堂。盘古信息&#xff0c;凭借其卓越的技术实力和创新成果&#xff0c;在这场盛会上荣获“2023年软件行业领军人物”、“2023年软件行业平台软件领军企业”、“2023年软…

线程池嵌套导致的死锁问题

1、背景 有一个报告功能&#xff0c;报告需要生成1个word&#xff0c;6个excel附件&#xff0c;总共7个文件&#xff0c;需要记录报告生成进度&#xff0c;进度字段jd初始化是0&#xff0c;每个文件生成成功进度加1&#xff0c;生成失败就把生成状态置为失败。 更新进度语句&…

Unity打包PC端exe,压缩打包为一个exe文件

目录 一.打包成功 1.打包输出文件 二.压缩输出目录为exe单个文件 1.添加到压缩文件 2.其他设置 1.点击“高级→自压缩选项” 2.修改解压后运行程序 3.设置模式 4.更新 三、生成.exe 一.打包成功 1.打包输出文件 1、一个后缀为 BurstDebugInformation_DoNotShip的文…

ios不兼容Svg Wave的动画的解决方法

近日也是用上了SvgWave&#xff0c;十分的好看 Svg Wave - A free & beautiful gradient SVG wave Generator. 大家感兴趣的也可以了解一下 【场景】 使用SvgWave的Animate&#xff0c;并生成svg代码使用&#xff0c;windows web端、朋友的安卓移动端都能够正常执行动画…

typescript常用方法整理

基础用法 接口简单用法 函数表达式用法 // 函数类型用于表达式函数 // 接收两个参数name和age //函数返回字符串 interface fun {(name: string, age: number): string } let getData: fun getData function (name, age) {console.log(我的姓名是${name},年龄是${age})return…

SSL证书安装失败怎么办?

在互联网时代&#xff0c;SSL&#xff08;Secure Sockets Layer&#xff09;证书已成为保障网站数据传输安全、提升用户信任度的重要工具。然而&#xff0c;在实际操作过程中&#xff0c;SSL证书的安装并非总能一帆风顺&#xff0c;有时会遇到各种导致安装失败的问题。本文将详…

基于KubeAdm搭建多节点K8S集群

环境准备 说明配置系统CentOS 7.x系列CPU4核及以上内存8G及以上机器数量最少两台&#xff08;一主节点一工作节点&#xff09; 安装docker&#xff08;主节点工作节点&#xff09; 先安装yml yum install -y yum-utils device-mapper-persistent-data lvm2设置阿里云镜像 …

工厂物流3d可视化设计有哪些特点及功能亮点

工厂物流3D可视化设计是一种基于三维模型的物流可视化技术&#xff0c;主要用于展示工厂内部的物流运作情况&#xff0c;具有以下特点和功能亮点&#xff1a; 1. 三维模型展示&#xff1a; 工厂物流3D可视化设计通过三维模型展示工厂内部的物流设施和运作情况&#xff0c;可以…