Git 的 pre-commit hook(以及其他钩子脚本)默认不会被 git commit 追踪,也不会被 git push 推送到远程仓库

结论先行

Git 的 pre-commit hook(以及其他钩子脚本)默认不会被 git commit 追踪 ,也不会被 git push 推送到远程仓库------除非你主动将钩子文件加入版本控制并提交。

详细解释

1. 钩子文件的默认存储位置

Git 钩子脚本默认存放在仓库的 .git/hooks/ 目录下:

  • .git/ 目录本身是 Git 的「版本控制元数据目录」,默认被 .gitignore 排除 (Git 不会追踪 .git/ 内的文件);
  • 因此 .git/hooks/ 下的 pre-commit 等钩子文件,天然不会被 git add/git commit 捕获,更不会被 push 到远程。
2. 如何让钩子被版本控制(可选)

如果你希望团队共享钩子脚本,需要手动处理:

步骤 1:在仓库根目录创建钩子模板目录
bash 复制代码
# 比如创建 .githooks 目录(自定义名称,非默认)
mkdir .githooks
# 将 pre-commit 钩子复制到该目录
cp .git/hooks/pre-commit .githooks/
步骤 2:将 .githooks 加入版本控制
bash 复制代码
git add .githooks/pre-commit
git commit -m "添加pre-commit钩子模板"
git push  # 此时钩子会被推送到远程
步骤 3:让 Git 识别自定义钩子目录

其他开发者拉取代码后,需要执行以下命令让 Git 使用 .githooks 下的钩子:

bash 复制代码
# 局部生效(仅当前仓库)
git config core.hooksPath .githooks

# 或全局生效(所有仓库)
git config --global core.hooksPath ~/.githooks

注意:即使将钩子提交到远程,其他开发者也需要手动执行 core.hooksPath 配置,否则 Git 仍会使用默认的 .git/hooks/ 目录。

关键总结

场景 是否被 commit 是否被 push
默认 .git/hooks/pre-commit ❌ 否 ❌ 否
手动移到仓库根目录并 git add ✅ 是 ✅ 是

简单来说:默认不追踪、不推送;主动提交则会被追踪和推送

如果你的目标是「仅本地使用钩子,不希望推送到远程」,保持默认的 .git/hooks/ 目录即可,无需额外操作。

相关推荐
wangruofeng13 小时前
20822 star 的开源录屏软件弃 Tauri 换 Electron:表层是换壳,里子是 46 个 Rust 模块
github·音视频开发
CAD老兵16 小时前
一行代码集成 DWG/DXF 图纸查看:测量批注,数据不出站
前端·javascript·github
zh_xuan18 小时前
github搭建个人主页
html·github
fthux18 小时前
装闭 RenoPit 源码解析(10):AI如何审查装修合同与报价单
人工智能·ai·开源·github·open source·renopit
TunerT_TQ19 小时前
Google|LangExtract 源码静态评测:从 90 个 Python 文件看大模型结构化信息抽取工程基础
google·开源·github
Vuhao19 小时前
DeepSeek Harness:我 vibe coding 一个会陪你的桃濑日和
开源·github
Jay-r19 小时前
DeepSeek Harness 极简上手:装好、玩熟、让它自己长新能力
人工智能·windows·ai·github·ai编程·deepseek·harness
CAD老兵1 天前
让 AI Coding Agent 直接访问 CAD 文档:GitMCP 实战指南
前端·人工智能·github
Revolution611 天前
DeepSeek Harness 最近上线:Everything is a Plugin 有什么特别之处
llm·github·deepseek
fthux1 天前
装闭 RenoPit 源码解析(09):AnalysisEngine装修闭坑分析主流程
人工智能·ai·开源·github·open source·renopit