git - 如何在预提交挂钩中使用 git diff 的退出代码
问题描述
我有一个带有后端和前端的项目,但是由于每次更改都会执行 git pre-commit 挂钩,因此我需要检查是否在前端进行了更改。
我尝试了这个预提交钩子:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
git diff --cached --name-only --quiet frontend
if [ $? -eq 1 ]; then
cd frontend && npm run lint
fi
但是由于某种原因,它在运行 git 命令时失败了——这在我的终端中运行良好。我得到的错误是:
husky - 预提交钩子以代码 1 退出(错误)
这并没有真正的帮助。我的猜测是 git 命令返回一个错误代码,脚本就这样结束了。
知道如何解决这个问题吗?
解决方案
shell 脚本总是以最后执行的命令的退出代码或exit
内置命令指定的代码退出。
如果您需要脚本始终以特定的退出代码退出(例如,始终成功,0
),请确保您明确指定退出代码:
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
git diff --cached --name-only --quiet frontend
if [ $? -eq 1 ]; then
cd frontend && npm run lint
fi
exit 0
推荐阅读
- php - 使用带有 PDO::query() 的字符串查询数据库时遇到问题
- c - 我想让我的 c 程序调度具有特定 CPU 使用率的其他程序
- javascript - 在异步函数上自动传递错误
- bash - 管道查找到 grep
- reactjs - 告诉 React/Redux 忽略对象引用并进行深度相等检查
- mysql - MySQL 到 MariaDB - 动态列?
- r - 如何在不对矩阵进行行归一化的情况下估计 SAR 空间模型?
- c++ - 有没有办法存储模板参数包并在以后重用它?
- android - Android ViewBinding 与 CustomView
- flutter - 创建没有上下文的 Flutter 警报/对话框