钩子
钩子都被存储在 Git 目录下的 hooks 子目录中--即绝大部分项目中的 .git/hooks 。 当你用 git init 初始化一个新版本库时,Git 默认会在这个目录中放置一些示例脚本。这些脚本除了本身可以被调用外,它们还透露了被触发时所传入的参数。 所有的示例都是 shell 脚本,其中一些还混杂了 Perl 代码,不过,任何正确命名的可执行脚本都可以正常使用
pre-commit
.git/hooks/pre-commit
这个钩子被 git commit 命令调用, 而且可以通过在命令中添加–no-verify 参数来跳过。这个钩子不需要参数,在得到提交消息和开始提交(commit)前被调用。如果钩子返回值不是0,那么 git commit 命令就会中止执行。
译注:这个钩子可以用来在提交前检查代码错误(例如运行lint程序)。
当默认的pre-commit钩子被启用时,如果它发现文件尾部有空白行,那么就会中止此次提交。
1. 在同步本地项目到git出现这个错误:
pre -commit hook failed (add --no-verify to bypass)
pre-commit钩子惹的祸
当你在终端输入git commit -m "xxx",提交代码的时候,
pre-commit(客户端)钩子,它会在Git键入提交信息前运行做代码风格检查。
如果代码不符合相应规则,则报错。
2.暴力解决步骤:
进入项目的.git文件夹(文件夹默认隐藏,可先设置显示或者命令ls查找)
再进入hooks文件夹
删除pre-commit文件
重新git commit -m 'xxx' git push即可。SourceTree也可以正常推送
总结: 命令删除.git的提交规则文件: rm -rf ./git/hooks/pre-commit
3.其他解决方式
git commit - -m "msg"
或者
git commit --no-verify -m "msg"