在git commit的时候,有可能会遇到这样的报错,husky - pre-commit hook exited with code 1 (error)
出现这个问题的原因主要是,假如项目中采用 husky和lint-staged结合进行代码校验,那么,只要项目代码中有不规范的地方,git commit就会自动终止。
在项目开发中肯定不可能时时刻刻保证代码写的完善,面对这个问题,可以采用两个方案,跳过git commit检查。
方案一:--no-verify
git commit --no-verify -m "git commit info"
通过--no-verify命令,忽略掉不合规范的地方,强制上传。
这种方法很好,但是有个问题,如果只想上传部分文件,还要先通过git add和git reset来忽略一部分内容,例子如下:
git add . #将所有文件暂存
git reset ./vite.config.ts HEAD #将不需要上传的文件恢复
git commit --no-verify -m "git commit info"
方案二:--skip-worktree
因为我一直使用 tortoisegit进行git版本管理,不采用命令行的方式,不知道怎么在tortoisegit上输入--no-verify,所以找到了另一种方法,就是直接删除.husky目录,同时删除package.json中与husky相关的内容,去掉校验功能。
由于去掉之后会在面板上显示变动,所以要在删除文件之前,采用--skip-worktree告诉git忽略这个文件。具体代码如下。
git update-index --skip-worktree .husky/*#如果该语句不生效,可以替换成.husky/commit.sh这样的单个文件一一忽略
git update-index --skip-worktree package.json
这样一来,之后每次使用tortoisegit就可以直接commit了。
不过以上有个问题,假如后续项目中远程有人修改了package.json文件,pull时会在本地显示冲突,要先用--no-skip-worktree恢复文件,进行修改,再重新执行上述操作。
相比较之下,还是--no-verify的方案更方便。