Gitlab因为push rules导致git push出错
最近用Gitlab的时候push报错:
remote: GitLab: Commit message does not follow the pattern '^(fix|feat|refactor|chore|style|docs|test):([\s\S]){5,}$|^Merge|^Resolve|^Feat'
...
master -> master (pre-receive hook declined)
报错的意思是,我要按照它这个格式来写commit对应的信息,比如feat: add feature
。
正常Github里提交信息,commit里应该想写啥就写啥的,这里会报错就是因为Gitlab设置了Push Rules。解决办法有两个,如下所示:
一. 改变Project的项目设置
参考:https://docs.gitlab.com/ee/push_rules/push_rules.html#:~:text=On%20the%20left%20sidebar%2C%20select%20Settings%20%3E%20Repository.,Select%20Save%20push%20rules.
如果是自身创建的仓库,那么直接进入Gitlab里的仓库,进行如下操作:
如下图所示,把这行已经存在的命令删掉即可,然后Save Push Rules即可:
二. 修改之前提交的Commits
参考:https://gerrit-review.googlesource.com/Documentation/error-push-fails-due-to-commit-message.html
核心思路是修改自己的commit信息,让它符合仓库的命令格式。如果是last commit,可以直接写这样的,来修改上一次的提交信息:
$ git commit --amend
如果是更早的commits,需要使用interactive git rebase,具体的我没做过,不多说了。