问题标签 [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.
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
命令:
输出:
命令:
输出:
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-husky - 为什么 lint-staged 使用我的配置在未暂存的文件上运行?
我在我的 package.json 文件中设置了 husky 和 lint-staged 并且它运行,但在所有文件上运行,而我希望它只在暂存文件上运行。
git - 保护 git 存储库中的删除/重命名文件
git 存储库中是否可以有一个或多个文件可以更改但不能删除或重命名?用例是关于存储库设置,其中多个env
文件只能由开发人员调整,但要防止他们意外删除或重命名文件,因为如果没有使用该确切名称的文件,CI 会中断。
我的一个想法是编写某种 bash 或节点脚本并将其与huskypre-commit
挂钩到git 挂钩中,但我不确定该脚本会是什么样子。另一个想法是最初为文件设置正确的文件权限,但我不确定这些权限是否会保留在克隆在不同操作系统平台上的 git 存储库中。env
无论如何,也许有一些更惯用和更聪明的方法来做到这一点。令人惊讶的是,我在网上找不到任何东西......所以如果不是太麻烦,各种创造性的解决方案都可以接受。谢谢!
git - 仅在发生更改时使用 husky pre-push 运行测试
如标题所示,目前我已将我的应用程序配置为在每次执行 git push 时运行测试,
但显然它不能很好地扩展,测试越多,推送所需的时间就越多,那么有没有一种方法可以仅在文件发生更改时触发测试?
最终我发现 Jest 有一个很好的标志,--changedSince
所以你可以在你的 package.json 文件中有这样的东西:
"test:unit": "test:unit --changedSince=@{push}"
这将只执行自上次推送以来已更改的文件的测试,与远程 HEAD 进行比较
git - 带有预提交的 Pylint 和带有 husky 的 EsLlint
我有一个项目,前端是 JS,后端是 Python。前端已经配置了 husky 预提交钩子。今天我已经用预提交库配置了 Pylint,但是 husky 钩子已经被那个动作覆盖了。是否可以结合 pre-commit 和 husky 库?如果不是...解决问题的最佳方法是什么?
reactjs - 带有反应脚本的 ESLint 配置不起作用
我想将 eslint 配置为 precommit 钩子,我的项目是使用 create-react-app 制作的。我目前有以下配置。但是在提交之前没有运行以下上演的 Lint。此外,我无法安装任何其他版本的 ESLint,因为 react-scripts 需要 5.6.0 版本的 eslint,如果我尝试手动安装它的其他版本,它会引发错误。这里可能是什么问题?