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 rgbaLorem 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.mzph.cn/pingmian/5373.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python教程:深入理解Python中的命名空间和作用域

在 Python 编程中&#xff0c;理解命名空间&#xff08;Namespace&#xff09;和作用域&#xff08;Scope&#xff09;是至关重要的。它们决定了变量和函数的可见性和访问性&#xff0c;并直接影响代码的结构和行为。本文将深入探讨 Python 3 中命名空间和作用域的概念、规则以…

Postgresql 从小白到高手 十一 :数据迁移ETL方案

文章目录 Postgresql 数据迁移ETL方案1、Pg 同类型数据库2 、Pg 和 不同数据库 Postgresql 数据迁移ETL方案 1、Pg 同类型数据库 备份 : pg_dump -U username -d dbname -f backup.sql插入数据&#xff1a; psql -U username -d dbname -f backup.sqlpg_restore -U username…

基于PCIE4C的数据传输(三)——使用遗留中断与MSI中断

本文继续基于PCIE4C IP核实现主机&#xff08;RHEL 8.9&#xff09;与FPGA&#xff08;Xilinx UltrascaleHBM VCU128开发板&#xff09;间DMA数据传输时的中断控制。本文分为三个部分&#xff1a;FPGA设计、驱动程序设计、上板测试。 FPGA设计 基于PCIE4C的数据传输&#xff0…

聚醚醚酮(Polyether Ether Ketone)PEEK在粘接使用时可以使用UV胶水吗?要注意哪些事项?

一般情况下&#xff0c;聚醚醚酮&#xff08;Polyether Ether Ketone&#xff0c;PEEK&#xff09;是一种难以黏附的高性能工程塑料&#xff0c;而UV胶水通常不是与PEEK进行粘接的首选方法。PEEK表面的化学性质和高温性能使得它对常规胶水的附着性较低。然而&#xff0c;有一些…

深度学习之基于Matlab NN的伦敦房价预测

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 房价预测是房地产领域的一个重要问题&#xff0c;对于投资者、开发商以及政策制定者等都具有重要的指…

阿里云详细介绍,与AWS和GCP比较

一、阿里云详解 阿里云&#xff08;Alibaba Cloud&#xff09;&#xff0c;也被称为阿里巴巴云计算&#xff0c;是中国最大的云服务提供商&#xff0c;同时在全球范围内也具有显著的市场影响力。自2009年成立以来&#xff0c;阿里云已经发展成为一个提供全方位服务的云平台&am…

如何选择适合的美国站群服务器:经济实惠而可靠的选择

如何选择适合的美国站群服务器&#xff1a;经济实惠而可靠的选择 在今天的数字化时代&#xff0c;选择适合的服务器对于个人网站或企业来说至关重要。一台性能稳定、价格实惠的美国站群服务器能够为您的网站提供所需的支持&#xff0c;但在选择之前&#xff0c;有一些关键因素…

对话访谈——五问RAG与搜索引擎:探索知识检索的未来

记一次关于RAG和搜索引擎在知识检索方面的对话访谈&#xff0c;针对 RAG 与传统搜索引擎的异同,以及它们在知识检索领域的优劣势进行了深入的探讨。 Q&#xff1a;传统搜索引擎吗&#xff0c;通过召回-排序的两阶段模式&#xff0c;实现搜索逻辑的实现&#xff0c;当前RAG技术也…

SDB2F5 1.5A,高达28V输出1.2MHz升压转换器芯片IC

一般说明 该SDB2F5是一个恒定的频率&#xff0c;5针SOT23电流模式升压转换器&#xff0c;低功耗应用。SDB2F5交换机位于1.2MHz&#xff0c;并允许使用高度小于或等于2mm的微小、低成本电容器和电感器。内部软启动的结果在小浪涌电流和延长电池寿命。 该SDB2F5操作从一个…

Spring6 当中的 Bean 循环依赖的详细处理方案+源码解析

1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析 文章目录 1. Spring6 当中的 Bean 循环依赖的详细处理方案源码解析每博一文案1.1 Bean的循环依赖1.2 singletion 下的 set 注入下的 Bean 的循环依赖1.3 prototype下的 set 注入下的 Bean 的循环依赖1.4 singleton下的构…

云原生周刊:K8s 中的服务和网络 | 2024.4.29

开源项目推荐 k8s-image-swapper k8s-image-swapper 是 Kubernetes 的一个变更 Webhook&#xff0c;它将镜像下载到自己的镜像仓库&#xff0c;并将镜像指向该新位置。它是 docker pull-through proxy 的一个替代方案。 KubeIP v2 KubeIP v2 是 DoiT KubeIP v1-main 开源项…

使用 Microsoft 成本管理 + 计费控制 Azure 支出和管理账单

原文&#xff1a;Control Azure spending and manage bills with Microsoft Cost Management and billing learning path - Training | Microsoft Learn Azure Well-Architected Framework 是一个设计框架&#xff0c;可通过帮助工作负载执行以下操作来提高工作负载的质量&…

selenium启动参数设置

1. selenium selenium启动配置参数接收是ChromeOptions类&#xff0c;创建方式如下&#xff1a; from selenium import webdriver option webdriver.ChromeOptions()class SELEDEMO:def __init__(self):#启动配置参数接收是ChromeOptions类&#xff0c;创建方式如下&#xff1…

C++中,exit(0)和return 0的区别和作用

在C中&#xff0c;exit(0)和return 0;都可以用来结束程序&#xff0c;但它们在作用范围、执行流程以及清理机制上有明显的区别&#xff1a; 1.作用范围: return 0&#xff1a; 通常用在函数内部&#xff0c;特别是用在main函数中&#xff0c;表示程序正常结束&#xff0c;并返…

JavaScript中的Object方法、Array方法、String方法

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 &#x1f525;Object方法&#x1f31e;1 Object.is()&#x1f31e;2 Object.…

Windows中Redis安装配置

一&#xff0c;下载 Redis官网 Redis中文网 Redis的Github资源 安装 更改资源路径及添加环境变量 添加防火墙异常 设置最大缓存 三、验证redis安装是否成功 redis-cli

selenium4.x 之浏览器弹窗处理

一、浏览器自带弹窗alert弹窗 webdriver中处理JavaScript所生成的alert、confirm以及prompt弹窗是很简单的。具体思路是使用switch_to.alert()方法定位到alert/confirm/prompt弹窗。然后使用text/accept/dismiss/send_keys方法按需进行操做 操作 说明返回text返回alert/confir…

22 重构系统升级-实现不停服的数据迁移和用户切量

专栏的前 21 讲&#xff0c;从读、写以及扣减的角度介绍了三种特点各异的微服务的构建技巧&#xff0c;最后从微服务的共性问题出发&#xff0c;介绍了这些共性问题的应对技巧。 在实际工作中&#xff0c;你就可以参考本专栏介绍的技巧构建新的微服务&#xff0c;架构一个具备…

Centos 7 安装 Redis

Centos 7 安装 Redis 安装步骤1、安装软件源2、安装redis3、创建符号链接4、修改配置文件5、启动 redis6、停止redis 安装步骤 1、安装软件源 如果是Centos 8 直接yum install 就可以了 yum install -y redis但是如果是Centos 7&#xff0c;redis 默认的是 redis 3 系列&…

深入探索MinIO:高性能的开源对象存储服务器

深入探索MinIO&#xff1a;高性能的开源对象存储服务器 文章目录 深入探索MinIO&#xff1a;高性能的开源对象存储服务器一、引言二、MinIO概述三、MinIO的特点四、MinIO的架构五、MinIO的使用场景六、MinIO的安装部署七、MinIO的操作管理八、MinIO的生态系统九、MinIO的扩展性…