GitHub 桌面 Husky 预提交钩子没有

问题描述

我按照许多其他项目(在 Mac OS11 上)安装了 husky@4lint-staged。终端命令流 git add .git commit -m 'something' 流工作正常:Husky 的 pre-commit hook 和 lint-staged 命令被成功拾取。然而,Github 桌面预提交钩子似乎没有表现。

我尝试查看 .git/hooks/pre-commit 文件,它在那里:

#!/bin/sh
# husky

# Created by Husky v4.3.8 (https://github.com/typicode/husky#readme)
#   At: 3/7/2021,12:09:26 PM
#   From: /Users/admin/devProj/prject/node_modules/husky (https://github.com/typicode/husky#readme)

. "$(dirname "$0")/husky.sh"

命令:

...
        "husky": "^4.3.8","lint-staged": "^10.5.4",...
"husky": {
        "hooks": {
            "pre-commit": "tsc --noEmit && lint-staged"
        }
    },"lint-staged": {
        "**/*.(js|jsx|ts|tsx)": [
            "npm run lint:fix","prettier --write"
        ]
    }

GitHub Desktop 找不到此内容的任何其他原因?

解决方法

我建议升级到 Husky 版本 6,因为它对我有用,尽管它需要一些特定于 Windows 的额外步骤。

-- 背景 我现在正在使用最新的软件包解决同样的问题...

    "husky": "^6.0.0","lint-staged": "^10.5.3",

就我而言,我认为修复了我的配置中的错误——但它实际上只是完全禁用了 Husky,因为有一些复杂的 v4 -> v6 迁移说明:https://typicode.github.io/husky/#/?id=migrate-from-v4-to-v6

但是,我认为您遇到了与我相同的问题,即使我使用的是 Windows -- GitHub Desktop 抛出错误,可能是因为“找不到命令”或类似原因。

就我而言,husky 在命令行(适用于 Windows 的 git)上工作,但不在 GitHub Desktop 上工作。

一度这是 GitHub Desktop 中的一个已知错误,但看起来它在几年前就已修复。

赫斯基文档的一部分解决了这个特定错误:https://typicode.github.io/husky/#/?id=command-not-found

不幸的是,即使我完成了 v6 的迁移说明,我仍然遇到问题,它归结为使用 nvm(在我的情况下,nvm for Windows,它不太健壮,因为它甚至不支持 . nvmrc 文件)。

我完全卸载了 nvm 并重新安装了最新的稳定节点 (15.14.0) 和 npm (7.10.0)。但最终归结为将“C:\Program Files\Git\bin”添加到 PATH 中,最终与 husky v6 结合使 pre-commit git hooks 工作。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...