Git Hooks

Git 钩子(Git Hooks)介绍

概述

Git 钩子是在 Git 仓库中特定事件发生时自动运行的脚本,分为客户端钩子服务器端钩子。它们位于 .git/hooks 目录下,默认以 .sample 结尾的示例文件需要重命名(去掉 .sample)才能生效。

钩子类型

客户端钩子

1. 提交工作流钩子
  • prepare-commit-msg:在默认提交信息创建后、编辑器打开前运行
  • post-commit:在提交完成后运行,用于通知等操作

commit-msg:在用户输入提交信息后运行,用于验证提交信息格式

# 示例:要求提交信息符合规范if!grep -qE "^(feat|fix|docs|style|refactor|test|chore): ""$1";thenecho"提交信息必须符合规范:<类型>: <描述>"exit1fi

pre-commit:在提交消息输入前运行,用于检查代码风格、运行测试等

# 示例:检查是否有调试语句ifgitdiff --cached |grep -q "console.log";thenecho"发现 console.log 语句,请检查!"exit1fi
2. 电子邮件工作流钩子
  • 应用于 git am 命令的补丁应用流程
3. 其他客户端钩子
  • pre-rebase:变基前运行
  • post-merge:合并后运行

pre-push:推送到远程前运行

# 示例:推送前运行测试npmtestif[$? -ne 0];thenecho"测试失败,推送中止"exit1fi

服务器端钩子

  • pre-receive:处理来自客户端的推送时最先运行
  • update:每个分支推送时运行
  • post-receive:推送完成后运行,可用于CI/CD、通知等

实际应用示例

1. 自动检查代码质量

#!/bin/bash# .git/hooks/pre-commit# 运行 ESLint npx eslint --fix --ext .js,.jsx,.ts,.tsx src/ # 如果 ESLint 失败则阻止提交if[$? -ne 0];thenecho"ESLint 检查失败,请修复错误后再提交"exit1fi

2. 提交信息规范化

#!/bin/bash# .git/hooks/commit-msg# 检查提交信息格式if!grep -qE "^(feat|fix|docs|style|refactor|test|chore|perf|build|ci|revert)(\(.+\))?: .{1,50}""$1";thenecho"错误:提交信息格式不正确!"echo"格式:<类型>(<范围>): <主题>"echo"类型:feat, fix, docs, style, refactor, test, chore等"echo"示例:feat(auth): 添加用户登录功能"exit1fi

3. 防止提交敏感信息

#!/bin/bash# .git/hooks/pre-commit# 检查是否包含敏感信息ifgitdiff --cached --name-only |xargsgrep -n "password\|secret\|token";thenecho"发现可能包含敏感信息的文件,请检查!"exit1fi

管理钩子的最佳实践

1. 版本控制钩子

由于 .git/hooks 不在版本控制中,可以:

  • 在项目中创建 scripts/hooks 目录存放钩子
  • 使用符号链接或安装脚本
  • 使用 Husky(Node.js 项目)等工具管理

2. 使用 Husky(推荐用于 Node.js 项目)

# 安装npminstall husky --save-dev # 初始化 npx husky install# 添加钩子 npx husky add .husky/pre-commit "npm test" npx husky add .husky/commit-msg 'npx --no -- commitlint --edit "$1"'

3. 跨平台兼容性

  • 注意脚本的换行符(LF vs CRLF)
  • 避免平台特定的命令
  • 使用解释器声明(#!/bin/bash

注意事项

  1. 性能影响:钩子中的操作应尽量快速
  2. 错误处理:非零退出码会中止操作
  3. 用户友好:提供清晰的错误信息
  4. 可跳过:使用 git commit --no-verify 可跳过钩子检查

常见工具

  • Husky:现代化的 Git 钩子管理工具
  • lint-staged:只对暂存文件运行检查
  • commitlint:提交信息规范检查
  • pre-commit:Python 项目的钩子框架

Git 钩子是自动化开发工作流的重要工具,合理使用可以显著提升代码质量和团队协作效率。

Read more

从零开始:AIGC中的变分自编码器(VAE)代码与实现

从零开始:AIGC中的变分自编码器(VAE)代码与实现

个人主页:chian-ocean 文章专栏 深入理解AIGC中的变分自编码器(VAE)及其应用 随着AIGC(AI-Generated Content)技术的发展,生成式模型在内容生成中的地位愈发重要。从文本生成到图像生成,变分自编码器(Variational Autoencoder, VAE)作为生成式模型的一种,已经广泛应用于多个领域。本文将详细介绍VAE的理论基础、数学原理、代码实现、实际应用以及与其他生成模型的对比。 1. 什么是变分自编码器(VAE)? 变分自编码器(VAE)是一种生成式深度学习模型,结合了传统的概率图模型与深度神经网络,能够在输入空间和隐变量空间之间建立联系。VAE与普通自编码器不同,其目标不仅仅是重建输入,而是学习数据的概率分布,从而生成新的、高质量的样本。 1.1 VAE 的核心特点 * 生成能力:VAE通过学习数据的分布,能够生成与训练数据相似的新样本。 * 隐空间结构化表示:VAE学习的隐变量分布是连续且结构化的,使得插值和生成更加自然。 * 概率建模:VAE通过最大化似然估计,能够对数据分布进行建模,并捕获数据的复杂特性。

By Ne0inhk
2026年各大高校AIGC检测政策汇总(持续更新)

2026年各大高校AIGC检测政策汇总(持续更新)

2026年各大高校AIGC检测政策汇总(持续更新) 2026年毕业季正式来临,AIGC检测已经不再是"可能会查",而是"一定会查"。从去年下半年到现在,全国高校密集出台了一系列针对论文AI生成内容的检测政策。本文将为大家做一个尽可能全面的汇总,方便同学们快速了解自己学校的要求,提前做好准备。 本文持续更新,建议收藏。 2026年高校AIGC检测的整体趋势 在详细列出各高校政策之前,先给大家概括一下今年的整体形势: 三大核心变化 1. 检测范围全覆盖:不再只是抽检,而是全部论文必查AIGC 2. 检测标准趋严:AI率阈值从去年普遍的30%收紧到20%甚至10% 3. 处罚力度加大:从"修改后重新提交"升级到"延期答辩"甚至"取消答辩资格" 主要检测平台分布 * 知网AIGC检测系统:覆盖约60%的985/211高校

By Ne0inhk

大模型微调新姿势:用Llama Factory一键搞定LlaMA 3定制

大模型微调新姿势:用Llama Factory一键搞定LlaMA 3定制 如果你正在寻找一种快速、高效的方式来微调LlaMA 3模型,那么Llama Factory可能是你的理想选择。作为一个开源的低代码大模型微调框架,Llama Factory集成了业界广泛使用的微调技术,支持通过Web UI界面零代码微调大模型。这类任务通常需要GPU环境,目前ZEEKLOG算力平台提供了包含该镜像的预置环境,可快速部署验证。 为什么选择Llama Factory进行LlaMA 3微调 Llama Factory之所以成为AI创业团队的首选工具,主要因为它解决了以下几个痛点: * 环境搭建复杂:传统微调需要手动安装CUDA、PyTorch等依赖,耗时且容易出错 * 学习曲线陡峭:需要掌握大量命令行操作和参数配置 * 资源消耗大:本地部署需要高性能GPU,成本高昂 * 方法选择困难:不同微调方法效果差异大,难以快速对比 Llama Factory预装了所有必要组件,包括: * 主流微调方法:LoRA、全参数微调、增量预训练等 * 多种模型支持:LlaMA 3、Qwen、Cha

By Ne0inhk

揭秘VSCode Copilot无法登录原因:5步快速恢复访问权限

第一章:VSCode Copilot无法登录问题概述 Visual Studio Code(VSCode)中的GitHub Copilot作为一款智能代码补全工具,极大提升了开发者的编码效率。然而,在实际使用过程中,部分用户频繁遭遇Copilot无法正常登录的问题,导致功能受限或完全不可用。该问题可能由多种因素引发,包括网络连接异常、身份验证失效、插件配置错误或系统环境限制等。 常见表现形式 * 点击“Sign in to GitHub”后无响应或弹窗无法加载 * 登录完成后仍提示“GitHub authentication failed” * Copilot状态始终显示为“Not signed in” 基础排查步骤 1. 确认网络可正常访问GitHub服务,必要时配置代理 2. 检查VSCode是否已更新至最新版本 3. 重新安装GitHub Copilot及GitHub Authentication扩展 验证身份认证状态 可通过开发者工具查看认证请求是否成功发出。在VSCode中按 F1,输入 Developer: Open

By Ne0inhk