问题标签 [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.
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
,即,当我们处于合并状态时它应该出错。我怎样才能在一个简单的命令中做到这一点?
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
命令:
输出:
命令:
输出:
jquery - Husky 和 lint-staged 无法运行 gulp 命令
我正在尝试从 package.json 运行 gulp 命令。但无法执行。
这是我的 package.json。
npm run lint 工作正常。
这里 gulp locale-sass 不起作用。
✖ gulp locale-sass && npm run lint:任务从未定义:&&
列出可用任务,尝试运行: gulp --tasks
使用 gulpfile /u02/home/user01/drupal/drupal-7.9/sites/medic/gulpfile.js
husky > pre-commit hook 失败(添加 --no-verify 绕过)
git - Husky Hooks 上的附加命令失败
我正在使用husky
并commitLint
检查我工作的一个存储库中的提交消息。
包.json
很简单。但是,由于我不想为团队中经验不足的开发人员制造障碍,我想运行一个 CLI 来帮助他们格式化提交消息,如果钩子“commit-msg”由于格式错误而失败。
因此,我尝试了以下"commit-msg": "commitlint -E HUSKY_GIT_PARAMS &> /dev/null || npx git-cz"
操作,它执行了第二个命令,但它也在运行后立即关闭了 cli。
那么,知道如何实现这样的事情吗?
git - 使用 husky 解析 git commit 消息
如何使用 husky 检查特定的 git 提交消息模式?每当git commit -m "message"
调用命令时,我都想解析消息。我怎么能这样做?我怎样才能收到 git commit 消息并启动解析?
目前,我的 package.json 包含 husky:
但我不确定在 shell 脚本文件中做什么。如何接收提交消息然后解析它?
这是我正在尝试的shell脚本。它与git 文档非常相似
git - 如何修复预提交挂钩失败的错误消息
尝试使用 gatsby 在 vscode 上进行提交时出现此错误。有谁知道去做吗?
windows - Husky 预提交钩子失败(windows vs. mac)
我在我的 Windows 10 机器上运行 vscode 并尝试将提交推送到 github。
我团队中的所有开发人员都使用 Mac,当他们设置测试存储库时,他们添加了一项检查,即所有测试的名称都不能在名称中使用“.only”(由于人们重新命名了他们原来的名称)工作并忘记在提交之前重新命名它)。
但是,我们的许多验证测试在描述中使用“仅”一词(即“抽屉只能是 18”)。赫斯基以失败告终(在此处找到 .only)。
这适用于 Mac。任何想法为什么它在 Windows 上的工作方式不同?
eslint - 在暂存文件上运行 eslint "ONLY"
我正在尝试使用预提交挂钩在提交发生之前检测 eslint 错误。我正在使用 husky 和 lint-staged。但它对 src 中的所有文件运行 lint 命令,而不是仅对暂存文件运行。这是我的 package.json 文件。
有什么办法让它只适用于暂存文件而不适用于目录中存在的其他文件?
githooks - 如何使用 husky 将部分分支名称添加到 git commit
我有一个功能性的commit-msg
git 钩子,它将字符串从 git 分支名称的开头到第一个下划线,并将其添加到提交消息中。
为了更好地理解:分支名称是JIRA-123_fix_problem
,提交命令是:git commit -m 'Fix problem'
并且通过commit-msg
钩子提交消息将自动更改为JIRA-123: Fix problem
.
现在我们将Nuxt用于我们当前的Vuejs项目,这使用了husky。我们想在这个项目中保留哈士奇。不幸的是(而且,我猜是故意的),husky通过覆盖 git commit 钩子来工作,因此.git/hooks/commit-msg
我使用的文件将被husky覆盖,并且原来的commit-msg
钩子不再起作用。
我怎样才能防止哈士奇覆盖commit-msg
钩子或指示哈士奇做同样的事情?
我找不到任何有关此问题的文档。