21

在推送一个反应原生项目时,由于 husky 预推送失败,我收到错误

husky > pre-push hook 失败(添加--no-verify 绕过)

显示的所有这些错误都是 lint 错误,如下所示

unused-vars

27:48  error    Trailing spaces not allowed    
                     no-trailing-spaces

75:5   warning  Unexpected console statement   
                     no-console

92:93  error    Unexpected trailing comma   
                        comma-dangle

96:81  error    Unexpected trailing comma

如何在 Mac 上的 Sourcetree 应用程序上关闭此功能?

4

4 回答 4

32

问题(即使它不是真正的问题!)是因为 React 创建的钩子。解决方案是简单地删除 git 的钩子文件夹,该文件夹定义了预提交钩子,因此可以在此之后推送。(这只是避免一次编辑数千个文件的 lint 错误的一种技巧。遵循指南并解决所有 lint 错误,以获得更好的代码质量和可维护性。)

编辑:当您提供 git 命令行参数时,您也可以跳过钩子 -no-verify git push origin master --no-verify, 或使用 Sourcetree 的绕过提交钩子设置(在提交消息字段右上角的菜单中)

于 2018-12-11T08:23:22.787 回答
7

我认为帮助您理解该husky工具同样重要。
当我也在挣扎时,我发现这篇文章对管理这种情况非常有帮助。

Husky是一个 npm 包,可让您定义与本地 Git 事件(例如提交或推送)相关的 npm 脚本。这有助于在项目中执行协作标准。

在您的项目中,您提到所有错误都与 linting 有关。
因此,在那里,husky编写了脚本来创建一个git hook名为的pre-push,它会在您成功之前强制执行代码 linting 。git push

在我看来,特别是如果您在团队中工作,请不要关闭/停用这些检查,也不要删除.git/hooks文件夹。而是返回并运行lint script(通常在 中找到package.json),修改所需的更改,然后git push再次成功。

于 2020-02-09T05:02:01.793 回答
2

--no-verify标志添加到推送命令的末尾。

git push origin master --no-verify
于 2020-03-01T06:14:50.313 回答
-1

将 --no-verify 添加到短期提交的末尾。

我也在 Mac 上并开始看到这些,我认为是在我的主项目文件夹中实例化的 Carlo 应用程序上工作的。由于我不确定 Husky 是什么(未安装“husky”命令),我来谷歌搜索堆栈溢出,所以我开始四处挖掘寻找 linter,猜测尝试 eslint 。

➜  src_aminosee git:(master) ✗ eslint .
Error: Cannot find module '@ljharb/eslint-config'
Referenced from: /Users/tom/Dropbox/Sites/funk.co.nz/aminosee/carlojet/node_modules/array-includes/.eslintrc

这是当我意识到我在这里的 git repo 中有一个 git repo('carlojet' 尝试在 'aminosee' 主项目中的文件夹)!我必须(应该)将该文件夹移出。不确定这种嵌套回购问题是否是导致您的问题的原因,但是在如此移动并尝试提交后,我看到:

git commit -am "moved carlojet folder out as i think its git repo conflicted with this main one"
Can't find Husky, skipping pre-commit hook
You can reinstall it using 'npm install husky --save-dev' or delete this hook
Can't find Husky, skipping prepare-commit-msg hook
You can reinstall it using 'npm install husky --save-dev' or delete this hook
Can't find Husky, skipping commit-msg hook
You can reinstall it using 'npm install husky --save-dev' or delete this hook
Can't find Husky, skipping post-commit hook
You can reinstall it using 'npm install husky --save-dev' or delete this hook

我缺乏对 git 的了解,但对我来说,就像那些文件在离开仓库后挥手“再见”一样;或者更有可能对我从他们在aminosee/carlojet/.git/hooks/的真正家中遍历到他们的父母aminosee/.git/hooks/目录(这真是一个惊喜!)“眨眼”

我可能需要禁用从其他项目中复制的所有这些钩子......或者最好还是调出那个 linter!我想在我的情况下将 git repo 嵌套在自身内部并不是一个好主意。

于 2019-08-06T15:37:59.097 回答