gerrit提交报错,commit的message格式不对——it should be started with [Feature] or [BugFix]

本文分享了在Git中遇到的合并提交时因message格式问题导致的push失败经历,及解决方法,包括如何避免合并产生的默认message导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某个项目微量修改后,提交代码时报错,说message格式不对:

[ERROR!] Your message is not formatted correctly, ***

*** it should be started with '[Feature]' or '[BugFix]'

……

但实际上message前缀我一直符合要求,没出过问题,每次提交只改后面几个字。

我左看右看上看下看都看不出来哪里有违规,于是截图向多个同事求助,同时尝试撤销提交后多加几个字、去掉句号、加上冒号、全部写成英文再重新提交等方法,push时依然报同样的错误!最终采用代码管理平台同事的建议,也就是万能的终极大法——重新荡下代码,重新修改提交。试之,果验!

可惜最终还是不知道问题出在哪里!


以下是2020年4月8日更新

前几天又遇到这个问题,考虑到上次出现时pull过别人的代码,而代码里有合并分支的痕迹,即合并时产生过提交,这个提交的开头是“Merge branch ……”,这次是我在另一分支上开发完,回到master合并后又出现的,猜想可能由此导致。

在同事们帮忙下,找到了合并但不产生提交的方法:命令参数后面跟上 --no-commit ,合并后需要手动提交,这时自己写符合格式的message,再提交,push,果然解决了问题。

实际上尝试过程也很惊险,曾删掉分支,又恢复到之前的一次commit,这下新近的代码全没了┭┮﹏┭┮,后来查恢复办法,命令如下:

git branch <branch_name> <hash_val>

其中hash_val是要恢复分支节点的commit。这个从哪来呢?话说回来也很诡异,我开始遇到问题时远程求助过代码平台的同事,不知怎么神使鬼差的把那个合并分支commit的hash给复制了下来,没想到救命时用上了^_^。


2020年5月15日更新

又遇到了这个问题,这次的Merge不是我干的,是机器人干的,而且一下给我干出10个来!详细经历如下:

 

Merge "[BugFix]***************************"

8ed744f9 *** <***@***.com> on 2020/5/12 at 15:03

committed by Gerrit Code Review <root@iot-svndata02>

In 3 branches: HEAD, master, origin/master

 

  1. 手痒,尝试使用编辑器的tag功能打标签时(以前都手动在命令行操作)没地方写message,push上去了但没成功打包,于是删除本地后去删除远程,但又被告知没权限,只好打算重新打标签。
  2. pull一下代码,本打算把原来那个标签拉下来,结果发现本地多了很多提交——近10次的提交每个之后多新增了一个合并代码的提交,也就是近10次变成了近20次,而合并的这些提交的message都是以Merge开头的,导致我的代码不能push上去,提示如标题。
  3. 这些提交看起来是系统机器人干的:
  4. 其中某一条合并的信息如下:
  5. 找代码平台负责的同事咨询,无果。
  6. 尝试变基,没想到成功了:通过编辑器的rebase按钮实现,默认选项不动,最后只能选择最后一次提交进行变基,变完之后就剩9个Merge提交了,这时一试,代码居然就push上去了。看来是卡在了最后一次Merge上。变基后的log如:

 

要通过脚本查询Gerrit上的特定库(例如TestTool库)提交commit信息,并直接获取JSON格式的结果,你可以使用Gerrit的REST API进行操作。以下是一个简单的步骤说明: 1. 获取API Token:首先,确保你有一个Gerrit账户,并且该账户有足够的权限来查询提交信息。然后在Gerrit的个人设置中获取一个API Token,这个Token将用于API请求的认证。 2. 确定查询参数:你需要决定要查询的范围,比如时间范围、提交的状态、提交者等,以便构造合适的API请求。 3. 使用REST API:通过Gerrit提供的REST API接口,你可以发送HTTP请求并获取提交信息。例如,使用`/a/changes`端点可以查询变更集。你可以构造一个请求,如`https://gerrit.example.com/a/changes/?q=project:TestTool`来查询TestTool项目的所有提交。 4. 发送请求:通过脚本发送HTTP请求。如果你使用的是命令行工具curl,那么请求可能看起来像这样: ```bash curl -k -u <username>:<password> -o changes.json 'https://gerrit.example.com/a/changes/?q=project:TestTool' ``` 在这里,`-k`是允许不安全的连接(如果Gerrit服务器使用的是自签名证书),`-u`用于提供用户名和密码或用户名和API Token,`-o`用于将输出保存到名为`changes.json`的文件中。 5. 解析JSON:请求返回的JSON格式数据可以使用各种工具或库进行解析,例如在Python中可以使用`json`模块,而在JavaScript中则可以使用`JSON.parse()`方法。 请注意,为了保护你的账户安全,建议使用API Token而不是密码,并且确保在脚本中不要硬编码你的认证信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值