标签: git-husky

sh:哈士奇:找不到命令

我已经用 husky 设置了一个节点项目,但是当我的同事尝试npm install在他的 Mac 上运行时,他收到以下错误:

noa-be@1.0.0 prepare
husky install

sh: husky: command not found
npm ERR! code 127
npm ERR! path /Users/X/Desktop/Workspace/project
npm ERR! command failed
npm ERR! command sh -c husky install

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/X/.npm/_logs/2021-04-12T13_07_25_842Z-debug.log
Run Code Online (Sandbox Code Playgroud)

这些是相关的 package.json 部分:

noa-be@1.0.0 prepare
husky install

sh: husky: command not found
npm ERR! code 127
npm ERR! path /Users/X/Desktop/Workspace/project
npm ERR! command failed
npm ERR! command sh -c …
Run Code Online (Sandbox Code Playgroud)

git node.js npm husky git-husky

80
推荐指数
6
解决办法
14万
查看次数

哈士奇的 vsCode 问题

我在我的项目中配置了哈士奇。它正在使用“lint-staged”运行预提交挂钩,以便在每次提交之前使用“prettier”格式化代码。当我使用终端调用git commit.

但是,如果我使用 VS Code 源代码控制面板来提交文件,它只会提交而不运行预提交挂钩。我正在使用 Windows 10。预提交文件:

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npx "lint-staged"
Run Code Online (Sandbox Code Playgroud)

package.json 表示“lint-staged”

"lint-staged":{
    "*.{js,json,css,md}": [
        "prettier --write"
    ]
}
Run Code Online (Sandbox Code Playgroud)

vscode 源码控制面板

vscode 源码控制面板

如何解决这个问题,以便每次调用 git commit 时调用预提交挂钩,尽管它来自 vscode?

git visual-studio-code husky prettier git-husky

22
推荐指数
1
解决办法
3619
查看次数

husky > 预提交钩子失败(添加 --no-verify 绕过)

突然,我收到了“沙哑> pre-commit钩子失败(添加--no-验证旁路) ”错误消息时,我给了git commit

在此处输入图片说明

我不知道我做错了什么。我也试过git clean命令。

git pre-commit-hook husky angular git-husky

14
推荐指数
4
解决办法
2万
查看次数

修复合并冲突后如何绕过预提交挂钩?

TLDR:git rev-parse -q --verify MERGE_HEAD不处于合并状态时会出错。当我们处于合并状态时,如何获得会出错的类似命令?


问题:当我将 master 合并到我的分支并且它存在冲突时,我必须手动更正它们,然后提交。但在某些情况下,我有太多来自 master 的更改,所以我宁愿跳过预提交挂钩。

部分解决方案:我可以运行git commit --no-verify并合并内容,但那是因为我知道该标志。其他开发人员可能不知道这一点,因此(1)他们花费了比需要更多的时间来等待预提交挂钩运行,并且(2)因为这可能需要很长时间,他们往往不太可能重新合并主节点(假设) 。

几乎确定的解决方案:我找到了一种通过使用 来检测我是否处于合并状态的方法git rev-parse -q --verify MERGE_HEAD。当处于合并状态时,它返回一个哈希值,当不处于合并状态时,它会出错。但我需要的恰恰相反。当我处于合并状态时,我需要它出错,因此我可以将它作为预提交挂钩添加到我的所有挂钩中。这会使他们在第一行失败,然后不执行以下命令。

  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "*.js": [
      "git rev-parse -q --verify MERGE_HEAD",
      "eslint --max-warnings 0 --fix"
    ],
    "*.scss": [
      "git rev-parse -q --verify MERGE_HEAD",
      "stylelint 'app/**/*.scss'"
    ],
    "*.{js,json,yml,scss,md}": [
      "git rev-parse -q --verify MERGE_HEAD",
      "prettier --write"
    ],
    "*": [
      "bundle exec rubocop --auto-correct --force-exclusion"
    ]
  }, …
Run Code Online (Sandbox Code Playgroud)

git husky lint-staged git-husky

10
推荐指数
2
解决办法
6476
查看次数

Git推送失败,原因是在Sourcetree上的哈士奇式预推送

推送React本机项目时,由于沙哑的预推失败,我遇到了错误

沙哑>推前挂钩失败(添加--no-verify以绕过)

显示的所有这些错误都是像下面这样的皮棉错误

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
Run Code Online (Sandbox Code Playgroud)

如何在Mac上的Sourcetree应用程序上将其关闭?

git atlassian-sourcetree react-native git-husky

9
推荐指数
3
解决办法
7460
查看次数

GitHub 桌面 Husky 预提交钩子没有

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

我尝试查看该文件.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"
Run Code Online (Sandbox Code Playgroud)

命令:

...
        "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"
        ]
    }
Run Code Online (Sandbox Code Playgroud)

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

github-desktop husky lint-staged git-husky

9
推荐指数
1
解决办法
9698
查看次数

如何防止使用 husky 直接提交到 master 分支?

我正在使用 husky 来运行 git hooks。

"husky": {
    "hooks": {
      "commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
    }
  }
Run Code Online (Sandbox Code Playgroud)

我想防止直接提交到主分支。它应该允许仅通过合并请求更新主分支。

我从 Git 中发现了以下代码: Prevent commits in masterbranch。我将其复制到 .git/hooks/pre-commit 并且它有效

#!/bin/sh

branch="$(git rev-parse --abbrev-ref HEAD)"

if [ "$branch" = "master" ]; then
  echo "You can't commit directly to master branch"
  exit 1
fi
Run Code Online (Sandbox Code Playgroud)

但我想用哈士奇来实现这一点。我怎么做?

git git-husky

7
推荐指数
1
解决办法
4588
查看次数

当本地没有可用的 Node.js 时,将 Husky 与 Docker 结合使用

使用 Docker,当容器中有 Node.js 而本地机器上没有 Node.js 时,我试图让 Husky 工作。

因为它将用 git 命令触发,这里的信息是:“如果你在终端中运行 git 命令,husky 将使用你的 shell 中定义的版本PATH”,另一个:“~/.huskyrc如果存在,Husky 将使用源文件在运行钩子脚本之前。例如,您可以使用它来加载节点版本管理器或在钩子之前运行一些 shell 命令。”

诸如更改PATH以便它指向容器中的 Node.js 之类的事情是否可以成为解决方案?如果是这样,怎么办?

提前致谢!

githooks node.js docker husky git-husky

7
推荐指数
1
解决办法
371
查看次数

如何仅在子目录中运行赫斯基预提交

我们有一个带有文件夹结构的企业应用程序,如下所示:

/项目
  .git
  / sub1
    ... Java项目
  / sub2
    package.json
    ... Javascript Backbone专案
  / sub3
    ... Java项目
  / sub4
    ... Java项目
  / sub5
    package.json
    ... JavaScript React项目

目前,我在sub2和sub5项目中都设置了Husky,这会引起冲突(每次切换项目时都需要安装npm)。另外,Java开发人员报告说,当他们在项目sub1,sub3和sub4中提交代码时,正在执行Husky git钩子。

如果您在提交时位于某个文件夹中,是否只能运行挂钩?

git githooks husky git-husky

6
推荐指数
3
解决办法
887
查看次数

由于合并冲突,无法恢复未暂存的更改

当我执行git commit -m "commit message"命令时,lint-staged 显示此错误:

在此输入图像描述

我在 package.json 中的配置:

"husky": {
    "hooks": {
        "pre-commit": "npm run validate && lint-staged"
    }
},
"lint-staged": {
    "*.+(js|ts|tsx)": [
        "eslint"
    ],
    "**/*.+(js|json|ts|tsx)": [
        "prettier --write"
    ]
},
Run Code Online (Sandbox Code Playgroud)

它在mac上运行良好,但windows-10显示此错误。谁能告诉我windows出了什么问题?

git git-commit lint-staged git-husky

6
推荐指数
1
解决办法
4785
查看次数