IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> git hooks pre-push提交前判断当前本地分支和要提交到的目标分支,分支名是否一致 -> 正文阅读

[开发工具]git hooks pre-push提交前判断当前本地分支和要提交到的目标分支,分支名是否一致

背景:

项目开发时,因为分支多,且分支名有规律排序,担心会误将本地分支提交到远程其他分支上。

案例:

如本地a01分支,本要提交到远程a01分支上,push时不小心命令行写的是push到远程b01,结果将本地a01分支提交到远程b01分支上,导致代码混乱。

解决方案:

为避免此问题,写了git hook钩子,在push提交前检测如果当前分支和要推送到目标分支,分支名不一致时给出警告提示不允许推送;

代码实现:

pre-push文件:

#!/bin/sh

while read local_ref local_sha remote_ref remote_sha
do
    # 当前分支
    branch=$(git rev-parse --abbrev-ref HEAD)
	# 远程分支,此处可根据分支名进行截取
	remote_ref=${remote_ref}

	if [ ${branch} != ${remote_ref} ]
	then
		echo "
			当前分支${branch}和要推送到目标分支${remote_ref},分支名不一致
		"
		exit 1
	fi
done

exit 0

后续转载自https://blog.csdn.net/qq_41887214/article/details/121780683,使用pre-commit实现使用 ESLint 格式化工具来校验代码;

Git Hooks是什么?

Git Hooks 在Git执行特定事件(如commit、push、receive等)后触发运行脚本

让我们直观的看一下它

  1. 创建一个 .git 本地仓库
git init
  1. 查看 .git
cd .git
ls -la

请添加图片描述
3. 查看 hooks

cd hooks
ls -la

1
2

这是一个还没有配置 Git Hooks 的仓库,默认会有很多.sample结尾的文件,是示例文件,不会生效。

这些 hooks 会在我们执行 git 时或提前、或滞后自动执行
完整钩子说明,请参考官网链接

  1. 查看 .sample 文件

在这里插入图片描述
该文件告诉我们,去除 .sample 重命名该文件让该hook生效

Git Hooks 问题

配置较麻烦(实际上也不太麻烦 (o)/~)
.git 无法上传到远程仓库,配置无法共享
我们总不能手动copy配置吧,这样实在不高级,不优雅 😁

手动实现 Husky

在项目根目录下创建 .mygithooks目录,在 .mygithooks 下新建 pre-commit

mkdir .mygithooks
cd .mygithooks/
touch pre-commit

修改pre-commit

npx eslint ./src/

配置 git 让 .mygithooks/pre-commit 被 git 运行

git config core.hooksPath .mygithooks

给 pre-commit 添加可执行权限

chmod +x ./pre-commit

查看是否配置成功

cd ../.git
cat config

在这里插入图片描述
可以看到已经配置成功

回到根目录

git add .
git commit -m 'msg' //(使用 `IDE` 提交代码也可以)

在这里插入图片描述

可以看到 ESLint 校验成功了

这样将 .mygithooks 上传至远程仓库,你的小伙伴也可以共享 git hooks 配置了
————————————————

Husky

在使用 Husky 之前,需要移除我们刚刚配置的 .mygithooks

cd .git
vim config

在这里插入图片描述

光标选中 hooksPath,注意不要选错
双击按键 D 删除
按键 esc 结束编辑
按键 :wq 退出
回到项目根目录

cd ../

配置 husky
husky 官网

3.1.1 安装husky

npm install husky --save-dev

3.1.2 启用 Git hooks

npx husky install

在这里插入图片描述

可以看到在在我们项目的根目录出现了一个 .husky 文件夹,实质上与我们创建 .mygithooks 是一样的

3.1.4 prepare 脚本
执行下面的命令,会在 packgae.json 中添加 prepare 脚本

npm set-script prepare "husky install"

执行上面的命令我们会得到如下配置, prepare 脚本会在执行 npm install 后会自动执 husky install 命令,该命令会创建 .husky/ 目录并指定该目录为git hooks所在的目录。

{
  "scripts": {
    "prepare": "husky install"
  }
}

3.1.5 添加 pre-commit hooks
运行以下命令创建git hooks

npx husky add .husky/pre-commit "npm run lint"
git add .husky/pre-commit

运行完该命令后我们会看到 .husky/ 目录下新增了一个名为 pre-commit 的shell脚本。也就是说在在执行 git commit 命令时会先执行 pre-commit 这个脚本。pre-commit 脚本内容如下

#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

npm run lint

然后我们可以在 packgae.json 中添加 lint 脚本

{
  "scripts": {
    "lint": "npx eslint ./src"
  }
}

这样在执行 git commit 的时候会先执行 pre-commit 这个脚本,pre-commit 脚本内执行 npm run lint 脚本就会执行 eslint

当然上面的配置内容可以我们可以随意设计,这里只是一个示例

注:如果你出现以下问题,说明 pre-commit 没有可执行权限,给 pre-commit 添加可执行权限就好了
在这里插入图片描述

chmod +x .husky/pre-commit 

3.1.6 提交代码,测试一下

git commit -m 'husky'

1

可以看到 ESLint 检查成功了。恭喜祝?你,Husky 使用成功!!

——————————

Git Hooks所有钩子

在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 18:03:22  更:2022-04-18 18:07:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:03:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码