Git Commit Message 规范实践

2023-05-16

文章目录

  • 背景
  • 示例
    • Feature
    • Bug
    • Refactor
    • Docs
    • Test
    • Style
    • Chore
  • 每个Merge Request只有一个Commit
  • 小结
  • 附录

背景

本文总结了项目实践中的 Commit Message 规范。

任何一笔提交都是有原因的,因此 commit message 需要说明该笔提交的 目的. 我们主要借鉴AngularJS Git Commit Message Conventions。
规范commit message想要达到的目的主要有:

  • 提供更多更准确的信息。便于review,更容易发现潜在问题。便于查看历史记录回溯
  • 发布版本的时候可以通过脚本生成changelog
  • 可以对commit message信息进行过滤筛选

commit message 格式说明,都是必填。
(<issue_id>):

其中 Allowed

  • feat (feature)
  • fix (bug fix)
  • docs (documentation)
  • style (formatting, missing semi colons, …)
  • refactor
  • test (when adding missing tests)
  • chore (maintain)
  • ui (UI 微调,不影响功能逻辑)

<issue_id>: JIRA issue id。比如ANDROID_INFRA-74
: 目前要求是有内容就行。最好不要超过50个字。
: 空行。用来分隔subject和body, 分隔body 和 test affect。

: 关于change的相关描述。可以多行,可以包含空行。 : 测试影响说明。必须是关键字“测试影响”开头的一段说明。可以多行,可以包含空行。 注意:(): 里面的":"中英文都兼容。

示例

feat(ANDROID_INFRA-90): seperate registration from identity verification

原来的两个接口实现不动,但是标为 Deprecated

  1. /mobile/consignor/register/quick: doRegister()
  2. /mobile/consignor/real-name-authentication: doRealNameCertify()

新增两个接口:

  1. /mobile/consignor/register/quick: doQuickRegister()
  2. /mobile/consignor/identity-auth-request: submitIdentityVerifyRequest()

测试影响: 注册和验证流程

Feature

feat(ANDROID_INFRA-74): 功能简单描述
<空一行>
<功能具体的具体描述>
实现方法(可选):
<具体实现方法的描述>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>
<较大新功能和逻辑性较强的功能需要附带部分测试用例>

Bug

fix(ANDROID_INFRA-74): 简单描述
<空一行>
<关于Bug的一般说明>
产生原因:
<描述Bug的产生原因>
解决方法:
<描述如何修复bug>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Refactor

refactor(ANDROID_INFRA-74): 重构了什么地方的代码
<空一行>
<对重构内容、目的的相关描述>
所做修改:
<说明你做了那些修改>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Docs

docs(ANDROID_INFRA-74): 完善xxx文档
<空一行>
<修改原因>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Test

test(ANDROID_INFRA-74): 增加xxx方法自动测试案例
<空一行>
<测试详情>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Style

style(ANDROID_INFRA-74): check style 修改
<空一行>
<移除了哪些资源和内容>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

Chore

chore(ANDROID_INFRA-74): 完善脚本
<空一行>
<简单介绍>
<空一行>
测试影响:
<描述对现有功能的影响,测试需要注意的地方>

每个Merge Request只有一个Commit

各位可以多次 commit, 但是在提交 Merge Request 的时候只能有一次 Commit message,具体操作:

git rebase -i upstream/master

<pick第一次commit>

<squash剩下所有的commit>

<把所有的Commit Message按上述格式融合>

<如果有conflict请解决conflict>

git push origin <your_branch> --force

提交merge request

小结

commit 提交时需要注意 一次提交对应一个问题,一来方便 大家对此次的提交 code Review ,二来方便后期定期问题,提交时注意规范使用空行及空格(比如中英文之间添加空格、规范使用【】或者 「 」等,具体可以参考附录5)。

附录

  • 1. Git 提交的正确姿势:Commit message 编写指南
  • 2. 写出 angularjs 风格的源代码提交历史
  • 3. Commit Message 和 Change Log 编写指南
  • 4. AngularJS Git Commit Message Conventions
  • 5 .中文文案排版指北 – 中英混杂,标点符号规范
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git Commit Message 规范实践 的相关文章

  • socket.io 中的消息排序

    socket io 是否保证 on 回调将按照消息发出的顺序调用 Node js 是单个事件循环 所以是的 但是你还有另一个问题 考虑你和你的客户端之间的延迟 如果两个客户端发送消息 到达服务器的第一条消息将首先被处理 所以如果第一个客户端
  • 如何创建名称中带有正斜杠的标签

    当我已经有了类似的标签时 有什么方法可以创建名称中带有正斜杠的 git 标签吗 假设我有 1 16 0 标签 并且我想创建 1 16 0 1 0 0 标签 git tag 1 16 0 1 0 0 error refs tags 1 16
  • 在我的例子中,GIT 添加恢复(保留更改)

    在我对文件进行更改之后 我用git add FILE NAME 然后 我想将其恢复为未添加但与此同时保留更改 这个怎么做 git reset FILE NAME会做的 See the git reset manual https git s
  • Git:如何正确合并两个功能完全不同的分支?

    想象一下这样一种情况 同一个项目有两个分支 第一个分支的一部分对另一个分支进行了大幅重构 但有一段时间 您需要保持两个分支的功能 因此您需要对两个分支进行错误修复和关键功能添加 有时是以不对称的方式 在某些时候 您必须将重构的分支合并到原始
  • Gitolite git 克隆错误

    我正在尝试在我的服务器 Macos 服务器 上设置 gitolite 我按照此处找到的安装文档中的说明进行操作 http sitaramc github com gitolite doc 1 INSTALL html http sitara
  • 删除并在另一个文件夹中重新创建后保留文件的 Git 历史记录

    我有以下场景 删除了提交 1 中名为 src GetData cs 的文件 在提交 5 中创建了一个名为 src Get GetDataNew cs 的文件 在提交 7 中将 2 中的文件重命名为 src Get GetData cs 1
  • git-lfs 中的多个文件版本

    我正在尝试估计 GitHub 上我的项目的存储要求 并对 git lfs 如何存储多个版本的文件有一些疑问 git lfs 是否存储多个版本的文件 如果是这样 对文件的每次更改都会导致复制整个文件 还是仅存储差异 所有版本都会计入 gith
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • GitLab:无法将代码推送到服务器?

    我已经在 Ubuntu 服务器上安装了 GitLab 一切似乎都工作正常 除了我无法向服务器推送 拉取 克隆 当我按下时 我收到一般错误消息 fatal Could not read from remote repository Pleas
  • 使用 git 合并两个截然不同的分支?

    我有我的master分支和我的verydifferentbranch它们有相同的祖先 大约 300 次提交前 现在verydifferentbranch功能完整我想把它放在master下面branch 进行变基会导致每个补丁都有很多合并冲突
  • Git:文件“已更改但未更新”

    已更改但未更新 是什么意思 这些文件位于 git 中 它们已被修改 但是当我运行 git status 时 这些更改显示在 已更改但未更新 而不是 要提交的更改 下 On branch master Changes to be commit
  • 如何从暂存区删除单个文件(撤消 git add)?

    情况 我有一个 Git 存储库 其中文件已在索引中 我对几个文件进行了更改 打开 Git 并使用 git add 将这些文件添加到我的暂存区域 问题 如何从暂存区域中删除这些文件之一 但不将其从索引中删除或撤消对文件本身的更改 如果我正确理
  • Git Hook - 在我推送到 github 后让服务器拉取

    我有一个本地存储库 并且我在实时服务器上设置了另一个存储库 www site com projects ProjectA 我想要实现的目标非常简单 在我推送到 GitHub 后 我想要存储库位于www site com projects P
  • 如何存储和计算版本控制历史记录?

    考虑这个简单的 python 代码 它演示了一个非常简单的字典版本控制设计 def build current history current for action key value in history assert action in
  • 设置 Git osxkeychain 错误

    我正在设置 Git 并且正在关注http lifehacker com 5983680 how the heck do i use github http lifehacker com 5983680 how the heck do i u
  • gitlab:带有大型存储库的 git clone https 失败

    当尝试通过 https 克隆大型存储库 700MB 时 git 失败并显示 c git projects gt git clone https git mycompany de fs git Cloning into fs Username
  • 如何仅隐藏一些未提交的更改?

    我正在对 Git 存储库进行重大更改 并意识到某些更改需要向后移植到错误修复分支 我不想签入我的所有更改master因为它们还没有经过充分的测试和准备 但我确实想提取其中一些更改并将它们提交到错误修复分支 然后按原样返回到 master 我
  • 测量大型源树中的“接近度”

    作为我之前提出的问题的一部分找到两个来源之间的最佳匹配 https stackoverflow com questions 13898659 finding what git commit some code spawned from 其中
  • 如何使用 vim 作为“git log”编辑器?

    当我跑步时git log 编辑器到底是什么git log正在使用 Also 无论如何我可以使用吗vim作为我的默认编辑器git log 如果我想搜索 git 日志 最好的方法是什么 现在我正在做类似的事情 git log grep bla
  • 为什么我使用某些 git 命令后终端变得无响应?

    我经常 真的每次 使用该命令后git log我的终端对进一步的输入没有响应 这是在 OSX 上 是否有一个我不知道的命令将使终端再次激活 而不是仅仅退出终端并重新开始 您正在使用一个无需滚动即可显示日志的程序 很可能less 可以通过按q

随机推荐

  • Mac 环境下使用 homebrew 安装和彻底卸载 MySQL5.7

    一 安装 MySQL5 7 在终端执行下列命令 xff1a brew install mysql 64 5 7 使用 brew 安装好 MySQL 5 7 版本后 xff0c 此时 MySQL root 用户的密码是空的 我们需要修改一下
  • python 爬取网站首页并获取资源文件

    一 使用requests模块 xff0c 如果没有安装请使用如下命令 xff0c 安装requests模块 pip install requests 二 打开PyCharm xff0c 创建一个新的py文件 1 请求网站 xff0c 获取网
  • github pages部署静态网页

    github pages部署静态网页 如果你的项目只是一个静态网站 xff0c 就没有必要再去整什么服务器 xff0c github pages 提供了搭建静态网站的功能 xff1b 为什么使用Github Pages 1 搭建简单而且免费
  • 使用 @PostConstruct、@Bean(initMethod=“”)注解指定初始化方法 、及实现InitializingBean接口 在 Spring Bean 完成初始化后进行一些响应的操作

    如果需要在 某个特定的bean 被初始化后 xff0c 执行一些代码逻辑 xff0c 可以使用 64 PostConstruct 64 Bean xff08 initMethod 61 xff09 注解指定初始化方法 及实现Initiali
  • RK3399环境搭建----glibc2.29编译

    硬件 xff1a firefly RK3399 JD4 软件 xff1a ubuntu18 04 需求 xff1a 在RK3399开发板上进行在线调试 调试需要用到GDB xff0c 之前拿到的gdb运行的时候报错 xff1a 提示libm
  • Sql Server索引

    1 创建索引时遵循一般原则 在需要经常搜索的列上面创建索引 在主键上创建索引 在外键上创建索引 在经常用于Where子句的列上创建索引 在经常需要排序的列上创建索引 对于数据类型为text xff0c image xff0c bit的列不应
  • 迅雷下载提示:应版权方要求/包含违规内容, 文件无法下载

    问题 在使用迅雷下载资源时 xff0c 可能会提示应版权方要求 xff0c 无法下载或包含违规内容 xff0c 无法下载 xff0c 如下图 很多人可能此时已经放弃了 xff0c 不过 xff0c 迅雷可以配合Free Download M
  • 有趣的教程:在PyCharm2019.2版本中集成Jupyter Notebooks!

    PyCharm是一种Python IDE xff0c 其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具 此外 xff0c 该IDE提供了一些高级功能 xff0c 以用于Django框架下的专业Web开发 嗨 xff0c
  • 分享文件的另一种选择--Firefox Send

    提起 Firefox xff0c 大家熟知的应该就是 Firefox Browser xff0c 即 火狐浏览器 xff0c 但是今天要说的是火狐旗下的文件分享产品 Firefox Send xff0c 可以让你安全地进行文件分享 适用场景
  • 消除if...else的十种方法

    前言 if else 是所有高级编程语言都有的必备功能 但现实中的代码往往存在着过多的 if else 虽然 if else 是必须的 xff0c 但滥用 if else 会对代码的可读性 可维护性造成很大伤害 xff0c 进而危害到整个软
  • Qt学习笔记(三)运行库依赖

    正常应该写release版本的依赖库 xff0c 不过都差不多 xff0c 自行转化就对了 自己使用qt版本 Qt5 15 2 xff0c 因为我只编译了debug版本程序 xff0c 暂时只能拿debug说事了 直接查找依赖可以找到依赖有
  • 宽带测速网站收集

    国际通用 xff1a https www speedtest net http www speedtest cn xff08 国产 xff0c 主要服务器节点多 xff09 电信 xff1a https 10000 gd cn 移动 xff
  • 使用Git为每个项目配置独立的用户名和邮箱

    使用Git为每个项目配置独立的用户名和邮箱 平时在开发的过程中 xff0c 用到git时 xff0c 要做一些特殊的配置 xff0c 例如自己公司内网https的SSL证书未经过第三方机构签署 xff0c 直接操作Git就会报错 xff0c
  • 电脑重装系统后文件还能恢复吗?2个方法助你还原文件

    电脑重装系统后文件还能恢复吗 xff1f 此时可能你面临一个难题 xff1a 已经重装了电脑 xff0c 但是发现丢失的问题 实际上 xff0c 一般当电脑出现运行缓慢 xff0c 或者是电脑系统出现故障无法修复的时候 xff0c 大家都会
  • C盘重装还能恢复以前文件嘛,重装C盘数据备份清单

    重装系统主要是对C盘的重装 xff0c 也就是对C盘的格式化 xff0c 电脑安装系统的位置是C盘 xff0c 常见的重装方法只影响C盘而不会丢失其他盘的数据 那么C盘重装还能恢复以前的文件嘛 xff1f 重装C盘时什么文件必须备份呢 xf
  • HTML Parsing Error:Unable to modify the parent container element before the child element is closed

    一 又涨见识了 IE8报下面错误 xff0c 而且是我的机器不报 xff0c 同事的机器报 xff0c 试了4台 xff0c 两个报 xff0c 两个不报 xff0c IE版本都一样 xff0c 没想明白 解决 xff1a 1 查看是否有未
  • 架构师必须学会的几种 UML图

    文章目录 一 UML 是什么定义作用 二 UML 画图的工具推荐三 UML 类图中的关系1 泛化 继承 2 实现 xff08 Realization xff09 3 关联 xff08 Association 4 聚合 xff08 Aggre
  • 算法:如何实现两个大数相加

    文章目录 问题要求思路代码实现 问题 实现两个很大很大的数相加 xff0c 求出它们的和 要求 1 是整数 xff1b 2 两个数无限大 xff0c long 都装不下 xff1b 3 不能用 BigInteger xff1b 4 不能用任
  • 关于Android 未来开发的方向探讨

    文章目录 背景Anroid 应用开发工程师技能参考Android 基础设施建设技能参考Android 逆向开发工程师技能参考Android Framework工程师技能参考 xff08 车载系统 系统开发方向 xff09 Android 性
  • Git Commit Message 规范实践

    文章目录 背景示例FeatureBugRefactorDocsTestStyleChore 每个Merge Request只有一个Commit小结附录 背景 本文总结了项目实践中的 Commit Message 规范 任何一笔提交都是有原因