【git进阶】 .ignore 忽略有道 忽略核查gitcheck-ignore -v

news2024/11/26 16:31:42

git .ignore配置

  • .ignore使用场景
  • 新项目中.gitignore用法
    • 1 初始化生成.git文件夹
    • 2 git status 查看当前文件夹状态
    • 3 创建.ignore文件 忽略不想上传的文件
    • 4 编辑.gitignore文件 git status查看是否生效
  • .gitignore进阶用法
    • 模式匹配
    • 模式匹配例题练习
      • 1 忽略所有的内容
      • 2 忽略所有目录
      • 3 忽略src目录下所有内容,除了GulimallCouponApplication.java文件
      • 4 只保留target目录下的a{一个字符}z.{后缀名}的所有文件
    • 检查ignore规则是否有效?
    • 已有过版本追踪的文件如何忽略?
    • 恢复文件的版本追踪
  • 总结
    • 视频学习

.ignore使用场景

在项目中,并不是所有的文件都有保存到版本库中,如日志文件、临时文件、较大的权重文件、工具生成的文件等。

在这里插入图片描述

新项目中.gitignore用法

git ignore这是一个java的代码仓库,还没有进行远程控制。

1 初始化生成.git文件夹

未初始化之前的文件夹
在这里插入图片描述
使用 git init -b main 创建main分支,初始化本地文件夹,进行版本控制
在这里插入图片描述
生成了.git文件夹进行版本控制
在这里插入图片描述

2 git status 查看当前文件夹状态

在这里插入图片描述

我复制了一个.idea/文件夹,所以现在多了这个文件夹。这个是IDEA的缓存我希望上传。

提示:此时所有的内容都将被纳入到版本库

3 创建.ignore文件 忽略不想上传的文件

创建.gitignore文件,如果有就不用创建了,用文本编辑器打开文件,进行配置。
在这里插入图片描述

4 编辑.gitignore文件 git status查看是否生效

现在我想忽略 target 和 idea 文件夹

这是修改之前的git status状态
在这里插入图片描述
*每项配置独占一行。
*每行内容可以是:文件/目录 的名称、路径 或 他们的模式匹配
在这里插入图片描述
查看当前git status状态
在这里插入图片描述
可以看到红色部分已经被忽略了。
如果还想继续忽略 txt文件,一样将文件名添加到.gitignore文件即可。
在这里插入图片描述
查看git status状态
在这里插入图片描述
可以发现a.txt和b.txt都已经被忽略了,到这里最基本的用法就已经结束啦。

.gitignore进阶用法

往往在真是的开发场景中,比如微服务项目往往是多个层级目录,并且每个目录都有相同的文件,或者在一个深层目录有一个大文件我们不想上传还有很多复杂的场景。这个时候光靠我们把目录一个个复制到.gitignore文件夹是不够用的。 所以就让我们拾起.gitignore的神器来战胜这些牛马问题吧。

模式匹配

场景一: 除了a.txt,b.txt 我还有上百个以txt结尾的文件在根目录,这些文件我都不想上传到远程仓库。除了一行行复制文件名还有什么更好的办法吗?

当然有,我们可以写一条规则,匹配多个结果,这样就实现了一夫当关万夫莫传的效果。就可以借助我们的模式匹配了,学过正则表达式的小伙伴应该不会陌生。

1 空行 不匹配任何文件,因此常用作分隔符(方便阅读)。
2 # 用于注释,\ 表示转义(如需使用实体\,则要加"")。
3 * 可以匹配任何字符(0或多次),? 可以匹配任何字符(1次)(注意:它们都不可以匹配 / )。
4 / 用于分隔目录:
4.1 当 / 在开头时,表示只从.gitignore文件所在目录开始匹配,否则下级都将匹配。
4.2 当 / 在末尾时,只匹配目录,否则,则同名的目录和文件都将匹配。
5 ! 表示否定,原先被排除的文件,使用 ! 模式后该文件将会被重新被包含。但如果的父级目录被排除了,那么使用 ! 也不会再次被包含(这个是经常容易错的点)。
6 [ ] 通常用于匹配一个字符列表,如:a[mn]z可匹配 amz和anz。
7 ** 用于匹配多级目录,如a/**/b,可以匹配 “a/b”,“a/x/b”,"a/x/y/b"等。

/ax 只能匹配根目录下的ax文件
ax 能匹配根目录下所有目录下的ax,比如/b/ax,c/d/ax等等都能被匹配带到
ax/ 只能匹配ax目录,不能匹配ax文件。

模式匹配例题练习

1 忽略所有的内容

先把之前写的内容注释了,输入* 或者**
在这里插入图片描述
git status 查看状态
在这里插入图片描述

2 忽略所有目录

还记得目录则呢么表示吗?

/结尾表示目录
所有目录就是 */ ,在.gitignore文件输入,git status查看结果。
在这里插入图片描述
结果如下,可以发现除了目录文件夹,其他文件没有被忽略。
在这里插入图片描述

3 忽略src目录下所有内容,除了GulimallCouponApplication.java文件

这个是java文件的目录结构。
在这里插入图片描述

\git ignore\src\main\java\com\atguigu\gulimall\coupon\GulimallCouponApplication.java

可能大部分上来就就是直接忽略src文件夹,然后再用感叹号取消这个.java文件了。
在这里插入图片描述

这就放错误了啊,铁铁!! 看一下效果。
在这里插入图片描述
整个src目录直接就没了啊!!!
圣经重现再读一遍。

! 表示否定,原先被排除的文件,使用 ! 模式后该文件将会被重新被包含。但如果的父级目录被排除了,那么使用 !
也不会再次被包含
(这个是经常容易错的点)。

所以这个时候我们需要分步骤来。
先忽略cupon文件夹下的所有文件,然后再取消.java文件。
这个时候需要查看上级目录,再进行忽略
coupon目录结构如下。

\git ignore\src\main\java\com\atguigu\gulimall\coupon

上级目录直到有main目录下面有另一个目录,所以我们也要忽略resource目录
在这里插入图片描述
src目录下也有两个目录,所以我们也需要手动忽略test目录
在这里插入图片描述
将我们的考虑的写入.gitignore文件如下所示
在这里插入图片描述

注意:Windows直接复制文件夹文件目录src\test 这个目录划分斜杠不是git中的目录结构划分斜杠,\ 表示转义(如需使用实体\,则要加"")。 需要把 \ 改成 / 在.gitignore文件中。

开始我没注意git status 还是没有src/目录,虽然显示的是src/目录,但是确只会版本追踪GulimallCouponApplication.java这一个文件。
在这里插入图片描述

4 只保留target目录下的a{一个字符}z.{后缀名}的所有文件

target目录结构如下所示
在这里插入图片描述
首先我们实现 只保留target目录,由于target目录与.gitignore目录同级,所以可以直接使用/ *先忽略根目录下的所有文件(不能直接使用*会直接把根目录也忽略),然后使用!保留target文件夹。
在这里插入图片描述
git status查看
在这里插入图片描述
第一步成功,在考虑如何实现第二部
a{一个字符}z.{后缀名}的所有文件

先要过滤target其他文件夹
/target/*
然后保留 a{一个字符}z.{后缀名}的所有文件
!/target/a?z.*
使用git add . 添加到本地仓库后,使用git status查看文件状态
可以看到只上传了 a9z.txt文件,说明成功了。
在这里插入图片描述

检查ignore规则是否有效?

git check-ignore -v {文件或者目录路径}

在第四题的条件下,检查target 目录下a.txt文件是否被忽略掉。
在这里插入图片描述

git check-ignore target/a.txt

在这里插入图片描述
显示了 target/a.txt 就表示被忽略了。
如果想看是具体哪一条规则把它忽略掉了,可以加一个-v

git check-ignore -v target/a.txt

在这里插入图片描述

.gitignore:4:/target/*  target/a.txt~

表示在 .gitignore 文件的第四行指令:/target/* 忽略了 target/a.txt
66666

已有过版本追踪的文件如何忽略?

方法:加入gitignore -> 删除本地缓存 -> 重新add 。

# 将缓存文件加入gitignore
git rm -r --cached .
git add .
git status 

恢复文件的版本追踪

方法:从gitignre中移除配置 -> 重新 add。

总结

忽略有道要注意,从子目录来找起
若父目录被忽略,感叹号无力回天
忽略层级划清楚,步步status得出

git check-ignore -v {}
git rm -r --cached .

视频学习

作者:迷斯特航 https://www.bilibili.com/read/cv19909520 出处:bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/938714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解树状数组

大家好,我是 方圆。关于各类区间和问题有很多种解法,我们可以根据题目要求选择解题的方向: 数组不变,区间查询:前缀和、树状数组和线段树 数组单点查询,区间查询:树状数组 和线段树 数组区间修…

“业务敏捷的领导力” 工作坊 · 2023年9月3日

“业务敏捷的领导力”在线工作坊 2023年9月3日;9:30-11:30 am 授课工具:Zoom分组Miro画布互动练习 讲师:Jim Wang王军 报名条件 优先捷行学员免费参加,报名2023后半年课程的学员免费,工作坊限定30人&#xff0…

【附安装包】Fireworks CS6安装教程

软件下载 软件:Fireworks版本:CS6语言:简体中文大小:165.87M安装环境:Win11/Win10/Win8/Win7硬件要求:CPU2.0GHz 内存4G(或更高)下载通道①百度网盘丨下载链接:https://pan.baidu.c…

STM32启动模式详解

文章目录 前置知识1. 单片机最小系统组成2. BOOT电路3. 三种启动模式4. 存储器映射 从主FLASH启动从系统存储区启动从SRAM启动 前置知识 1. 单片机最小系统组成 一个单片机最小系统由电源、晶振、下载电路、BOOT电路、和复位电路组成。少一个单片机都启动不了。 2. BOOT电路 …

华为云Stack的学习(二)

三、华为云Stack产品组件 FunsionSphere CPS 提供云平台的基础管理和业务资源(包括计算资源和存储资源)。采用物理服务器方式部署在管理节点。可以做集群的配置,扩容和运维管理。 Service OM 提供云服务的运维能力,采用虚拟化方…

线程基础:Java多线程的创建休眠与等待

目录 一.Thread 类是什么? 二.Thread 类的几个常见属性 三.线程创建 1. 继承Thread,重写 run 方法 2. 实现Runnable,重写 run 方法 3. 继承Thread,使用匿名内部类 4. 实现Runnable,使用匿名内部类 5. 使用 lambda 表达式…

大数据-玩转数据-Flink窗口

一、Flink 窗口 理解 在流处理应用中,数据是连续不断的,因此我们不可能等到所有数据都到了才开始处理。当然我们可以每来一个消息就处理一次,但是有时我们需要做一些聚合类的处理,例如:在过去的1分钟内有多少用户点击…

医疗器械行业的MES系统解决方案

医疗器械行业的MES系统(制造执行系统)解决方案是为医疗器械制造企业提供的一种集成化的信息技术系统,用于管理和监控制造过程,提高生产效率,确保产品质量,以及优化整个生产流程。MES系统通常涵盖了生产计划…

No118.精选前端面试题,享受每天的挑战和学习

文章目录 为什么说HTTP是无状态的协议?HTTP 报文结构是怎样的?HTTP1.1 中如何解决 HTTP 的队头阻塞问题?HTTP 中如何处理表单数据的提交?说下application/x-www-form-urlencoded 和 multipart/form-data对于定长和不定长的数据&am…

影视公司技术流程设计之Pipeline数据管理

使用场景 1 设计师画好设计稿后怎样让导演审查? 叫到位子上看? 放个文件夹会议室统一看?意见怎么记录,怎么反馈? 2 材质,绑定文件怎么与模型同步, 很多时间是绑定不小心改了, 去了灯…

WinRAR<6.23 远程代码执行漏洞【Poc公开】(CVE-2023-38831) [有POC]

漏洞类型代码注入发现时间2023-08-25漏洞等级高危MPS编号MPS-bw2s-d0rvCVE编号CVE-2023-38831漏洞影响广度广 漏洞危害 OSCS 描述WinRAR 是一款适用于 Windows 系统的压缩包管理器。 WinRAR 6.2.3之前版本打开压缩文件时会调用 ShellExecute 函数匹配文件名,如果目…

软件设计师(十一)标准化和软件知识产权基本知识

一、标准化基础知识 标准(Standard)是对重复性事物和概念所做的统一规定 标准化工作的特征包括横向综合性、政策性和统一性 1、基本概念 (1)标准的分类 国际标准:ISO、IEC等国际标准化组织国家标准:GB一中国、ANSI一美国、BS一…

AIGC领航,智能AI赋能乡村教育,梦想扬帆远航

一位扎根深山支教十年的湖北教师袁辉的故事曾经感受无数人,新华社、人民日报都撰文为他点赞。在他带过的学生中,有一位名叫青青的女学生患有成骨不全症,俗称“瓷娃娃”,学校离家十几公里山路,上学对她来说,…

Java注解与反射

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Java注解与反射 Java注解和反射是Java语言中两个强大的特性,它们可以一起使用以实现动态的、灵活的编程和元数据处理 注解 Java注解(Annotatio…

振弦采集读数模块开发原理详细介绍

飞讯教学篇:振弦采集读数模块开发原理详细介绍 振弦采集读数模块是一种用于采集弦振信息的模块,其原理是通过传感器感知弦的振动,将其转化为电信号,然后经过模拟处理和数字化处理,最终输出为可供后续处理的数字信号。…

Python照片压缩教程:如何轻松减小图片大小

介绍 在日常的编程工作中,我们经常需要处理图像,例如上传、下载、显示、编辑等。有时候,我们需要对图像进行压缩,以减少占用的空间和带宽,提高加载速度和用户体验。那么,如何用Python来实现图像压缩呢&…

【数据分析】统计量

1. 均值、众数描述数据的集中趋势度量,四分位差、极差描述数据的离散程度。 2. 标准差、四分位差、异众比率度量离散程度,协方差是度量相关性。 期望值分别为E[X]与E[Y]的两个实随机变量X与Y之间的协方差Cov(X,Y)定义为: 从直观上来看&…

开源vue动态表单组件

一、项目简介 vueelement的动态表单组件,拖拽组件到面板即可实现一个表单 二、实现功能 支持拖拽 支持输入框 支持文本框 支持数字输入框 支持下拉选择器 支持多选框 支持日期控件 支持开关 支持动态表格 支持上传图片 支持上传文件 支持标签 支持ht…

无涯教程-Python机器学习 - Semi-supervised Learning函数

Python机器学习 中的 Semi - 无涯教程网无涯教程网提供https://www.learnfk.com/python-machine-learning/machine-learning-with-python-semi-supervised-learning.html

图像翻拍检测——反射分量分离的特征融合

随着计算机技术的迅速发展,需要建立人与信息一一对应的安保认证技术,通过建立完整的映射网络体系,从而确保每个人的人身、财产、隐私等的安全.与指纹、基因等人体生物特征识别系统相比,人脸识别系统更加友好,不需要人的…