欢迎光临
我们一直在努力

husky -.git can’t be found

对于个人站长和使用 VPS 进行项目部署的开发者来说,利用 Git Hooks 来自动化代码质量检查(如 Pre-commit linting)是提高效率的常见做法。Husky 是一个流行的工具,用于简化 Git Hooks 的配置。

然而,在使用 Husky 时,一个非常常见的错误提示是:husky – .git can’t be found。这通常发生在项目初次设置、CI/CD 环境运行脚本,或项目目录结构发生变化时。

诊断问题:Husky 为何找不到 .git?

Husky 的工作机制依赖于 Git 仓库的根目录,它需要在 .git 文件夹中注册 hooks。如果 Husky 找不到这个文件夹,它就无法工作。

主要原因通常有两个:
1. 项目尚未初始化 Git 仓库。 (最常见原因)
2. 脚本执行的当前工作目录(CWD)不正确。 (常见于 CI/CD 或 NPM 脚本)

解决方案一:初始化 Git 仓库

如果你是在一个全新的文件夹中设置项目,或者你只是复制了项目文件但没有复制 .git 文件夹(例如,你从压缩包解压而不是使用 git clone),你需要手动初始化 Git。

首先,确认 .git 是否存在:

ls -a
# 如果没有看到 .git 目录,则需要初始化

如果确认 .git 不存在,执行以下命令初始化仓库:

# 假设你在项目根目录
git init

# 添加所有文件并进行初次提交,确保 Git 仓库完整
git add .
git commit -m "Initial commit"

初始化完成后,请再次运行 Husky 安装命令:

npx husky install

解决方案二:修复脚本的执行路径(针对 CI/CD 或部署)

如果你在 VPS 上通过自动化脚本部署项目,或者在 package.json 中配置了 postinstall 脚本,但仍然遇到这个错误,那么很可能是脚本的执行位置不对。

例如,你的项目位于 /home/user/my-website,但你的 CI/CD 工具可能从 /home/user 开始执行命令,这时 Husky 就会失败。

解决方法:确保脚本执行前切换到项目根目录。

在你的部署脚本(如 bash 脚本或 CI 配置文件)中,务必在运行任何涉及 Husky 的命令之前,使用 cd 命令进入项目根目录。

假设项目路径存储在变量 PROJECT_ROOT 中:

# 示例部署脚本片段
PROJECT_ROOT="/home/vpsadmin/my-website"

# 切换到项目根目录
cd "$PROJECT_ROOT"

# 现在执行安装和构建,Husky 将能找到 .git
npm install

# 重新安装 Husky hooks
npx husky install

# 继续运行其他部署步骤...

针对 package.jsonpostinstall 钩子

如果错误发生在 npm install 期间,并且你在 package.json 中使用了 postinstall 脚本来执行 husky install,请确认你的构建系统是否在正确的目录下运行 npm install

// package.json 示例
{
  "scripts": {
    "postinstall": "husky install"
  }
}

如果运行环境没有正确设置 CWD,你可能需要移除 postinstall 脚本,并在部署脚本中显式地在项目根目录运行 npx husky install,如解决方案二所示。

总结

husky – .git can’t be found 错误的核心是工作目录问题。无论是手动初始化 Git (git init),还是在自动化流程中明确指定正确的执行路径 (cd /path/to/repo),确保 Husky 能够在包含 .git 文件夹的路径下运行是解决此问题的关键。

【本站文章皆为原创,未经允许不得转载】:汤不热吧 » husky -.git can’t be found
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址