0Pricing
Git & GitHub Professional Workflow · 课时

了解 Git 钩子

探索不同类型的 Git 钩子,以及它们在 Git 工作流中的执行时机。

了解 Git 钩子 是 CoddyKit 上的免费 Git & GitHub Professional Workflow 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Git & GitHub Professional Workflow 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Git & GitHub Professional Workflow 课程共包含 4 节课。

什么是 Git 钩子?

欢迎了解 Git 钩子!Git 钩子是功能强大且可自定义的脚本,Git 会在提交、推送或接收推送的提交等事件发生前后自动执行它们。

您可以把它们想象成 Git 工作流中的自动检查点或操作。它们有助于强制执行项目规范、自动完成任务,并与其他系统集成。

钩子的位置

每个 Git 仓库都自带一个 .git/hooks 目录。在其中,您会找到示例钩子脚本(通常以 .sample 结尾)。

要激活钩子,只需删除 .sample 扩展名,并使文件具有可执行权限。Git 随后会在适当的时间运行它。

  • 位置: .git/hooks/
  • 文件:Shell 脚本(Bash、Python、Ruby 等)
  • 激活:重命名并设置为可执行

客户端与服务器端

Git 钩子根据运行位置分为两种主要类型:

  • 客户端钩子:在本地计算机上运行(例如,在提交或变基之前)。它们用于自动化个人工作流和执行本地策略。
  • 服务器端钩子:在远程 Git 服务器上运行(例如,将代码推送到共享仓库时)。它们会为所有人执行整个项目范围的策略。

客户端钩子:pre-commit

pre-commit 钩子是最常见的客户端钩子之一。它会在 Git 正式创建提交之前运行。

如果 pre-commit 脚本以非零状态退出,Git 就会中止提交。这非常适合执行以下任务:

  • 检查代码规范(检查样式错误)
  • 运行单元测试
  • 检查大文件或敏感数据

客户端钩子:commit-msg

commit-msg 钩子会在您输入提交消息之后、提交最终确定之前运行。

此钩子可用于确保提交消息遵循特定约定或格式。例如,它可以检查:

  • 消息是否以工单 ID 开头(例如 [JIRA-123])
  • 消息长度是否在限制范围内
  • 是否存在或缺少特定关键字

客户端钩子:post-commit

post-commit 钩子会在提交成功创建后立即运行。

与 pre-commit 或 commit-msg 不同,此钩子无法更改提交结果。它通常用于通知或集成,例如:

  • 通知团队成员
  • 更新项目管理工具
  • 触发持续集成(CI)构建(不过这更常见于服务器端钩子)

服务器钩子:pre-receive

接下来介绍服务器端钩子,pre-receive 会在远程仓库中的任何引用(例如分支或标签)更新*之前*执行。

这个钩子非常强大,可用于强制执行重要的仓库策略,例如:

  • 禁止直接推送到 main 分支
  • 确保所有提交都经过签名
  • 验证提交者身份

如果这个钩子以非零状态退出,整个推送都会被拒绝。

服务器钩子:post-receive

post-receive 钩子会在推送成功更新远程仓库中的引用*之后*运行。

与 post-commit 类似,这个钩子无法拒绝推送。它通常用于:

  • 触发持续集成/持续交付流水线
  • 更新外部问题跟踪工具
  • 向团队发送电子邮件通知
  • 将代码部署到预发布环境

创建一个简单的钩子

要创建钩子,只需在 .git/hooks/ 目录中创建一个以钩子名称命名的文件(例如 pre-commit)。下面来创建一个非常基础的钩子:

#!/bin/sh

# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0

使钩子可执行

创建钩子脚本后,必须使其具有可执行权限,否则 Git 不会运行它。请在终端中使用 chmod 命令:

chmod +x .git/hooks/pre-commit

现在,每次您尝试提交时,Git 都会执行这个脚本!

快速检查:钩子的执行时机

Git 钩子会在工作流中的特定时间点运行。了解它们的执行时机,是有效使用钩子的关键。

回顾:了解 Git 钩子

您已经迈入了 Git 钩子这一强大领域!

  • Git 钩子是在 Git 事件期间自动执行操作的脚本。
  • 它们位于仓库的 .git/hooks/ 目录中。
  • 钩子分为客户端(本地计算机)和服务器端(远程仓库)两类。
  • pre-commit 和 pre-receive 等关键钩子可以通过阻止操作来强制执行策略。
  • post-commit 和 post-receive 等钩子用于操作完成后的通知或集成。

接下来,我们将深入了解如何实现特定钩子的实用示例!

常见问题解答

「了解 Git 钩子」课时是免费的吗?

是的 — 「了解 Git 钩子」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Git & GitHub Professional Workflow 课程的其余内容,请升级到 CoddyKit PRO。 Git & GitHub Professional Workflow 课程共包含 4 节课。

「了解 Git 钩子」这节课中我会学到什么?

探索不同类型的 Git 钩子,以及它们在 Git 工作流中的执行时机。 你通过在浏览器中直接运行的动手代码来练习 Git & GitHub Professional Workflow,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Git & GitHub Professional Workflow 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Git & GitHub Professional Workflow 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「了解 Git 钩子」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Git & GitHub Professional Workflow 课中编写并运行代码吗?

能。每节 Git & GitHub Professional Workflow 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 了解 Git 钩子
  2. 提交前与合并后钩子
  3. 自定义 Git 配置
  4. 使用 Husky 共享钩子
← 返回 Git & GitHub Professional Workflow