一身反骨的我,用--no-verify绕开了git代码提交限制!

简介: 【10月更文挑战第7天】一身反骨的我,用--no-verify绕开了git代码提交限制!

故事背景

在上一个项目组,团队强制要求使用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 目录

cd .git/hooks

创建 pre-commit 文件

touch pre-commit

pre-commit 文件

nano pre-commit

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

#!/bin/sh

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

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

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-commitcommit-msgpre-push

比如

跳过 pre-commit commit-msg Hooks

git commit -m "嘿嘿,我要跳过检查" --no-verify

跳过 pre-push Hook

git push --no-verify

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

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

注意:

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

总结

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

git commit -m "嘿嘿,我要跳过检查" --no-verify

简写

git commit -m "嘿嘿,我要跳过检查" -nv
相关文章
|
20天前
|
开发工具 git
使用Git根据日期进行代码版本切换的方法
通过以上步骤,可以有效地根据日期进行Git代码版本的切换。这种方法在需要回溯历史版本进行bug修复或功能复查时特别有用。Git的灵活性和强大功能使其成为现代软件开发不可或缺的工具之一。
228 103
|
4月前
|
数据可视化 Java 测试技术
Git Flow 现代实操指南含从代码提交到 CI/CD 全流程的实用技巧与长尾关键词解析 Git Flow
本指南结合现代技术趋势,详解Git Flow工作流,涵盖GitHub Actions自动化、Conventional Commits规范、Gitmoji可视化等内容,助你实现代码到CI/CD的全流程管理,提升团队开发效率与代码质量。
252 2
|
6月前
|
JavaScript 前端开发 持续交付
实际工作中 Git Commit 代码提交规范是什么样的?
实际工作中 Git Commit 代码提交规范是什么样的?
350 7
|
6月前
|
网络安全 开发工具 git
Git仓库创建与代码上传指南
本教程介绍了将本地项目推送到远程Git仓库的完整流程,包括初始化本地仓库、添加和提交文件、创建远程仓库、关联远程地址及推送代码。同时,还提供了`.gitignore`配置、分支管理等可选步骤,并针对常见问题(如认证失败、分支不匹配、大文件处理及推送冲突)给出了解决方案。适合初学者快速上手Git版本控制。
|
5月前
|
开发工具 git 索引
如何使用Git的暂存区来管理代码更改?
如何使用Git的暂存区来管理代码更改?
877 0
|
IDE 网络安全 开发工具
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
158 1
【Azure App Service】Local Git App Service的仓库代码遇见卡住不Clone代码的问题
|
开发工具 数据安全/隐私保护 git
记录一次使用git工具拉取coding上代码密码账号错误的经历
这篇文章记录了作者在使用Git工具从Coding平台克隆项目时遇到的账号密码错误问题,并分享了通过清除电脑凭证中错误记录的账号密码来解决这个问题的方法。
记录一次使用git工具拉取coding上代码密码账号错误的经历
|
开发工具 git Python
通过Python脚本git pull 自动重试拉取代码
通过Python脚本git pull 自动重试拉取代码
375 5
|
10月前
|
Devops Shell 网络安全
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
415 16
git使用之如何将一套代码同时推送至github|gitee|gitcode|gitlab等多个仓库-含添加ssh-优雅草央千澈完美解决-提供整体提交代码
|
开发工具 git
git如何修改提交代码时的名字和邮箱?
git如何修改提交代码时的名字和邮箱?
3620 4