问题标签 [git-husky]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2565 浏览

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

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


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

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

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

请注意,上面提到的不起作用。为了让它工作,我们只需要从 反转效果git rev-parse -q --verify MERGE_HEAD,即,当我们处于合并状态时它应该出错。我怎样才能在一个简单的命令中做到这一点?

0 投票
0 回答
629 浏览

git - husky pre-push 以代码 0 退出,但推送从未发生

我在我的pre-push钩子中使用代码 0 退出,但推送从未发生。知道为什么我的钩子成功结束但推送没有发生吗?

这是我的husky.config.js

疑难解答✅</p>

吉特:git version 2.24.2 (Apple Git-127)

操作系统:macOS Catalina 10.15.3

终端:VSCode 1.44.2

命令:

输出:

命令:

输出:

0 投票
1 回答
319 浏览

git - Husky Hooks 上的附加命令失败

我正在使用huskycommitLint检查我工作的一个存储库中的提交消息。

包.json

很简单。但是,由于我不想为团队中经验不足的开发人员制造障碍,我想运行一个 CLI 来帮助他们格式化提交消息,如果钩子“commit-msg”由于格式错误而失败。

因此,我尝试了以下"commit-msg": "commitlint -E HUSKY_GIT_PARAMS &> /dev/null || npx git-cz" 操作,它执行了第二个命令,但它也在运行后立即关闭了 cli。

那么,知道如何实现这样的事情吗?

0 投票
1 回答
779 浏览

git - 使用 husky 解析 git commit 消息

如何使用 husky 检查特定的 git 提交消息模式?每当git commit -m "message"调用命令时,我都想解析消息。我怎么能这样做?我怎样才能收到 git commit 消息并启动解析?

目前,我的 package.json 包含 husky:

但我不确定在 shell 脚本文件中做什么。如何接收提交消息然后解析它?

这是我正在尝试的shell脚本。它与git 文档非常相似

0 投票
1 回答
475 浏览

git-husky - 为什么 lint-staged 使用我的配置在未暂存的文件上运行?

我在我的 package.json 文件中设置了 husky 和 ​​lint-staged 并且它运行,但在所有文件上运行,而我希望它只在暂存文件上运行。

0 投票
0 回答
35 浏览

git - 保护 git 存储库中的删除/重命名文件

git 存储库中是否可以有一个或多个文件可以更改但不能删除或重命名?用例是关于存储库设置,其中多个env文件只能由开发人员调整,但要防止他们意外删除或重命名文件,因为如果没有使用该确切名称的文件,CI 会中断。

我的一个想法是编写某种 bash 或节点脚本并将其与huskypre-commit挂钩到git 挂钩中,但我不确定该脚本会是什么样子。另一个想法是最初为文件设置正确的文件权限,但我不确定这些权限是否会保留在克隆在不同操作系统平台上的 git 存储库中。env

无论如何,也许有一些更惯用和更聪明的方法来做到这一点。令人惊讶的是,我在网上找不到任何东西......所以如果不是太麻烦,各种创造性的解决方案都可以接受。谢谢!

0 投票
1 回答
2971 浏览

git - 仅在发生更改时使用 husky pre-push 运行测试

如标题所示,目前我已将我的应用程序配置为在每次执行 git push 时运行测试,

但显然它不能很好地扩展,测试越多,推送所需的时间就越多,那么有没有一种方法可以仅在文件发生更改时触发测试?


最终我发现 Jest 有一个很好的标志,--changedSince 所以你可以在你的 package.json 文件中有这样的东西:

"test:unit": "test:unit --changedSince=@{push}"

这将只执行自上次推送以来已更改的文件的测试,与远程 HEAD 进行比较

0 投票
5 回答
53614 浏览

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

突然,我给git commit.

在此处输入图像描述

我不知道我做错了什么。我也试过git clean命令。有人遇到过类似的问题吗?

0 投票
2 回答
2577 浏览

git - 带有预提交的 Pylint 和带有 husky 的 EsLlint

我有一个项目,前端是 JS,后端是 Python。前端已经配置了 husky 预提交钩子。今天我已经用预提交库配置了 Pylint,但是 husky 钩子已经被那个动作覆盖了。是否可以结合 pre-commit 和 husky 库?如果不是...解决问题的最佳方法是什么?

0 投票
0 回答
783 浏览

reactjs - 带有反应脚本的 ESLint 配置不起作用

我想将 eslint 配置为 precommit 钩子,我的项目是使用 create-react-app 制作的。我目前有以下配置。但是在提交之前没有运行以下上演的 Lint。此外,我无法安装任何其他版本的 ESLint,因为 react-scripts 需要 5.6.0 版本的 eslint,如果我尝试手动安装它的其他版本,它会引发错误。这里可能是什么问题?