Git钩子

106 阅读3分钟

一、概述

  1. 是什么:
    • 一种脚本
  2. 能干什么:
    • 能在Git仓库中的特定事件发生时执行自定义操作
    • 能执行各种任务,如代码校验、测试、自动化部署等,来确保代码的质量和一致性
  3. 有哪些:
    • pre-commit钩子
      • 在提交代码前运行
    • commit-msg钩子
      • 在提交代码时运行
    • post-receive钩子
      • 在代码被推送到远程仓库后运行,通常用于服务器端的Git仓库
  4. 自动化安装、配置Git钩子的工具:
    • husky

二、安装Git钩子

  1. 手动配置:
    • 进入Git仓库的.git/hooks目录,发现一系列钩子的样板文件(.sample文件)
    • 编辑钩子文件,按个人需求添加钩子触发时执行的自定义代码,并将文件重命名为相应的钩子名称
    • 为钩子文件设置可执行权限:
      • 类Unix的系统:chmod +x 钩子文件
      • windows系统:icacls path/filename /grant Everyone:F
  2. 使用husky来配置:
    • 自动配置:[<-推荐]
      • 前提:项目目录为一个Git仓库
        • 初始化仓库:git init
        • 如何查看是否是Git仓库:git rev-parse --is-inside-work-tree
        • 如果项目目录为Git仓库还是error,采取重新配置Husky:npx husky set .husky
      • 以cmd命令行环境为例,输入命令:
        • npx husky-init ; npm install
          • 解释:
            • npx:
              • 是什么:
                • 一个用于执行Node.js包中的可执行文件的工具,不是包管理器
              • 干什么:
                • 用于在项目开发中执行一次性命令或在不全局安装包的情况下运行包里的命令
            • npx husky-init
              • 是什么:
                • 一个命令,用于初始化husky在项目中的配置
              • 具体在干什么:
                • 向package.json里的script里添加"prepare":"husky install"
                  • 这样做的优点:
                    • 确保别的开发者在安装我们的项目时,Husky将能正确地安装、配置Git钩子
                • 创建.husky目录(一个存放钩子脚本的目录)
                  • 创建钩子脚本:
                    • 注意:
                      • 要考虑操作系统类型:不同的操作系统会根据文件扩展名来决定怎样处理文件,使用哪种程序或解释器来执行文件
                      • windows:系统会自动根据文件扩展名来关联相应的文本编辑器
                      • Unix/Linux:系统使用不同的解释器来执行不同类型的脚本文件(需要指明使用哪种解释器)
            • npm install
              • 安装项目依赖
      • 结果:
        image.png
    • 手动配置
      • 安装husky:
        • 方式一:npm install husky --save-dev或npm install husky -D
        • 方式二:yarn add husky --dev或yarn add husky -D
      • 创建.husky目录
        • 用途:
          • 用于存放Git钩子脚本文件
            • 要为每个需要的Git钩子创建一个对应的脚本文件,向其中添加要执行的命令
            • 为钩子脚本文件添加执行权限:
              • chmod +x .husky/脚本文件名
      • 在package.json里配置Husky钩子路径:
        • "husky"{"hooks":{}}
      • 安装、配置Git钩子:
        • 运行:npx husky install
  3. 比较配置Git钩子的三种方式:
    • 不使用Husky:不需要额外的工具,但要手动维护
    • Husky自动配置:方便,但有时配置的复杂度超过了项目需要
    • Husky手动配置:灵活,但需要了解钩子们的工作原理