上一个项目用的svn,新项目用了git,很开心,终于学习了git了,本以为把git都学会了,但是还是遇到了一个不在自己学习的知识点范围内的问题,最后是同事帮忙解决的。
问题:第一次代码commit的时候,总是报错,看了下报错信息,貌似是在commit之前会检查一下代码错误,可是代码没有什么错误啊,能运行起来,难道eslint检查的错误也会被检查出来,然后commit失败吗?最后在网上找到了解决方案。
首先认识一下git的钩子:
钩子都被存储在 git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当用 git init 初始化一个新版本库时,git 默认会在这个目录中放置一些示例脚本。这些脚本除了本身可以被调用外,它们还透露了被触发时所传入的参数。 所有的示例都是 shell 脚本,其中一些还混杂了 Perl 代码,不过,任何正确命名的可执行脚本都可以正常使用
GIT_DIR/hooks/pre-commit :
这个钩子被 git commit 命令调用, 而且可以通过在命令中添加--no-verify 参数来跳过。这个钩子不需要参数,在得到提交消息和开始提交前被调用。如果钩子返回值不是0,那么 git commit 命令就会中止执行。
译注:这个钩子可以用来在提交前检查代码错误(例如运行lint程序)。
当默认的pre-commit钩子被启用时,如果它发现文件尾部有空白行,那么就会中止此次提交。