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