一身反骨的我,用一句代码绕开了代码提交限制!

故事背景

在上一个项目组,团队强制要求使用git rebase而不能使用gitmerge。

参考这篇文章:直接使用git pull拉取代码,被同事狠狠地diss了!

新的团队虽然没有这个要求,但突然给代码增加了git提交验证(在提交代码之前或之后进行检查,以确保提交符合特定的标准或规则)。

从代码规范来说,git提交验证是非常有必要的,但是我们这个项目很老了,经过很多人,突然增加git提交验证非常蛋疼!

以前的一些不规范代码,一些异常情况,难道还要我去修复兼容么?最难受的,我提交代码,node_modules还有代码兼容问题!

这让我如何容忍!于是二话不说,我使用--no-verify 跳过了git代码提交检查。

再介绍这个命令之前,我先介绍下git提交验证的一些基础知识。

Git Hooks

Git Hooks 是 Git 提供的一种机制,可以特定的事件发生时自动执行自定义脚本或命令,比如代码提交时,进行代码格式化、验证提交信息等。

常用的钩子函数有下面三个:

  • pre-commit:在执行 git commit 命令之前运行,可以用来检查代码风格、运行测试等。
  • commit-msg:在提交信息被输入后但提交被保存之前运行,可以用来验证提交信息的格式。
  • pre-push:在执行 git push 之前运行,可以用来确保代码符合一定标准,或阻止推送不合适的代码。

通过再这些钩子里写入一些代码,就可以在git不同阶段做一些处理。

创建一个简单的 pre-commit Hook

比如,我们可以写一个脚本,用于提醒开发者删除代码中的console.log 语句。

进入 .git/hooks 目录:

js 复制代码
cd .git/hooks

创建 pre-commit 文件:

js 复制代码
touch pre-commit

pre-commit 文件:

js 复制代码
nano pre-commit

添加脚本(例如,检查代码中是否存在调试语句):

js 复制代码
#!/bin/sh

if grep -r "console.log" .; then
  echo "Error: Please remove all console.log statements before committing."
  exit 1
fi

保存并退出,然后为脚本添加执行权限:

js 复制代码
chmod +x pre-commit

现在,我们每次提交代码时,Git 会在提交前运行这个 pre-commit 脚本。如果脚本发现 console.log 语句,提交将被阻止,并显示错误信息。

使用工具管理 Git Hooks

从上面的代码我们可以看出,自定义git hooks是非常麻烦的,因此,我们可以使用一些git工具,它们可以简化 Git Hooks 的管理。

  • Husky:一个流行的工具,可以将 Git Hooks 集成到项目中,并通过 npm 管理。适用于 JavaScript 项目。
  • pre-commit:一个用于管理和共享 Git Hooks 的框架,支持多种语言。

这些工具可以让我们的 Git Hooks 配置变得很容易。

我们公司使用的就是Husky

提交代码时,pre-commit被执行,最终触发

复制代码
npx lint-staged

lint-staged 是一个在提交代码时,仅对文件执行代码检查和格式化的工具,通常与Husky结合使用

本文就不介绍husky的使用了,感兴趣的大家可以自己百度。

如何绕开代码检查

想要绕开代码检查,最彻底的方法应该就是删除相关的检查代码了,比如我们公司使用的husky,删除它即可。

但,代码是公共的,删除文件显示不可行,这样肯定会被领导一顿臭骂!最简单的就是使用--no-verify

--no-verify 是 Git 提交命令中的一个选项,用于跳过 Git Hooks 的执行。使用这个选项时,Git 将不会运行与提交相关的 Hook,例如 pre-commit、commit-msg 或 pre-push。

比如

跳过 pre-commit 和 commit-msg Hooks:

js 复制代码
git commit -m "嘿嘿,我要跳过检查" --no-verify

跳过 pre-push Hook:

js 复制代码
git push --no-verify

我用来解决我项目中遇到的问题试试:

加了--no-verify效果显著啊!

注意:

--no-verify 没有简写;在日常开发中不建议频繁使用,跳过验证可能会导致不符合标准的代码进入代码库,或提交信息不符合团队规范(废话啊,用的时候一定是被迫的)。

总结

本文简单介绍了Git Hooks的一些基础知识,同时,最重要的介绍了跳过git提交检查的指令,就一句代码:

js 复制代码
git commit -m "嘿嘿,我要跳过检查" --no-verify
相关推荐
IT_陈寒3 分钟前
Vue的这个响应式陷阱,差点让我加班到天亮
前端·人工智能·后端
2301_7671139816 分钟前
点过“不再询问”就要检查:Claude Code权限文件也可能存着密钥
git·信息安全·claude code
Flynt1 小时前
别写拖拽行为,只声明"能拖到哪":UIST 最佳论文的拖拽方案我实测了
前端·svg·preact
Moment2 小时前
代码都能让 Agent 写了,我们为什么还要学前端?
前端·后端·面试
Hilaku2 小时前
MCP 协议会成为前端 AI 工程的标准接口吗?
前端·javascript·程序员
Zan2 小时前
Tauri 2 实战:为什么一个可靠的桌面应用,应该由 Rust Host 管理生命周期?
前端·架构·rust
SameX3 小时前
鸿蒙 ArkTS 独立开发者的项目结构 model / dao / viewmodel / page / common 的分层
前端
阿星AI工作室3 小时前
WorkBuddy做数字人口播:动效包装+克隆声音+真实照片+对口型全流程
前端
火山引擎开发者社区3 小时前
给企业配一双 AI 的手:火山引擎 OS Agent 替你操作手机和电脑
前端·人工智能
三年三月3 小时前
自建https证书SSL
前端