Git 推送由于源代码树上的哈士奇预推送而失败



在推送反应原生项目时,由于哈士奇预推失败而出错

赫斯基>预推钩失败(将 --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上的源树应用程序上关闭此功能?

这个问题(即使这不是一个真正的问题!(是因为赫斯基创建的钩子。Husky 是一个 npm 包,可让您定义与本地 Git 事件(如提交或推送(关联的 npm 脚本。这有助于在项目中实施协作标准。如果您太忙,快速的解决方案是简单地删除 git 的 hooks 文件夹,该文件夹定义了预提交钩子,因此可以在之后推送。(这只是一种黑客,以避免一次编辑数千个文件以出现 lint 错误。遵循指南并解决所有 lint 错误,以提高代码质量和可维护性。) 但是,最好了解赫斯基和钩子的工作原理并正确遵循棉绒警告。

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

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

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

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

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

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

git push origin master --no-verify

将 --no-verify 添加到短期提交结束时。

我也在 Mac 上,开始看到这些我认为是在我在主项目文件夹中实例化的 Carlo 应用程序时看到的。由于我不确定哈士奇是什么(未安装"哈士奇"命令(,我来谷歌搜索堆栈溢出,所以我开始四处挖掘寻找一个绒毛,猜测尝试 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 存储库中有一个 git 存储库("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/目录(这是一个惊喜!(

我可能需要禁用从其他项目复制的所有这些钩子......或者最好还是提起那个棉绒!我想在我的情况下将 git 存储库嵌套在自身内部不是好主意。

最新更新