天天看點

gerrit送出報錯,commit的message格式不對——it should be started with [Feature] or [BugFix]

某個項目微量修改後,送出代碼時報錯,說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 <[email protected]>

In 3 branches: HEAD, master, origin/master

  1. 手癢,嘗試使用編輯器的tag功能打标簽時(以前都手動在指令行操作)沒地方寫message,push上去了但沒成功打包,于是删除本地後去删除遠端,但又被告知沒權限,隻好打算重新打标簽。
  2. pull一下代碼,本打算把原來那個标簽拉下來,結果發現本地多了很多送出——近10次的送出每個之後多新增了一個合并代碼的送出,也就是近10次變成了近20次,而合并的這些送出的message都是以Merge開頭的,導緻我的代碼不能push上去,提示如标題。
  3. 這些送出看起來是系統機器人幹的:
    gerrit送出報錯,commit的message格式不對——it should be started with [Feature] or [BugFix]
  4. 其中某一條合并的資訊如下:
  5. 找代碼平台負責的同僚咨詢,無果。
  6. 嘗試變基,沒想到成功了:通過編輯器的rebase按鈕實作,預設選項不動,最後隻能選擇最後一次送出進行變基,變完之後就剩9個Merge送出了,這時一試,代碼居然就push上去了。看來是卡在了最後一次Merge上。變基後的log如:
    gerrit送出報錯,commit的message格式不對——it should be started with [Feature] or [BugFix]