如何编写.gitignore文件
文章目录
- 前端架构师教你如何编写.gitignore文件
- .gitignore文件简介
- .gitignore文件的语法规则
- .gitignore文件的最佳实践
- 常见问题与解决
前端架构师教你如何编写.gitignore文件
.gitignore文件简介
.gitignore文件是Git版本控制系统中一个非常有用的工具。它可以指定一组文件或目录,这些文件或目录将被Git忽略,不会纳入版本控制。这对于避免提交临时文件、构建产物、敏感配置信息等非常有用。
.gitignore文件的语法规则
- 忽略文件或目录
在.gitignore文件中,每行可以指定一个模式。模式可以是文件名、目录名,也可以是使用通配符的模式。例如:
# 忽略所有.log文件
*.log# 忽略名为temp的目录
temp/
- 使用通配符
*匹配任意数量的字符,但不包括目录分隔符/。**匹配任意数量的字符,包括目录分隔符/,用于递归匹配。?匹配单个字符。[abc]匹配括号内任一字符。
# 忽略所有.txt文件
*.txt# 忽略所有目录下的.tmp文件
**/*.tmp# 忽略a.out, b.out等
*.out
[]用的比较少,因为.gitignore不支持复杂写法
# 忽略所有以a、b或c开头的.txt文件
[abc].txt
这意味着Git将忽略任何文件名恰好为a.txt、b.txt或c.txt的文件,但不会忽略d.txt或其他不以a、b、c之一开头的.txt文件。
需要注意的是,这个模式只匹配单个字符。如果你想匹配多个字符中的任意一个,你需要使用其他模式,比如*通配符来匹配任意数量的任意字符,或者使用?来匹配任意单个字符。
举个例子,如果你想忽略所有以a、b或c开头,并且扩展名为.log的文件,你应该这样写:
[abc]*.log
但这个模式实际上是错误的,因为它会尝试匹配以a、b或c开头,后面跟着任意数量的任意字符,再后面是.log的文件。正确的模式应该是使用**来递归匹配任意数量的目录和文件名,如下:
**[abc]*.log
但这个模式也是不正确的,因为它会尝试匹配包含a、b或c任意位置的.log文件。实际上,Gitignore的模式并不支持这种复杂的字符类与通配符的结合。要实现这个需求,你可能需要为每个情况单独写一行:
a*.log
b*.log
c*.log
或者,如果你的意图是忽略所有扩展名为.log的文件,不论它们是否以a、b或c开头,你只需要简单地写:
*.log
请确保你理解你的.gitignore模式实际上是如何工作的,以避免意外的文件被忽略或未被忽略。
- 锚定模式
如果模式的开头或结尾包含目录分隔符/,则模式仅匹配以该目录分隔符开头或结尾的路径。
# 只忽略项目根目录下的TODO文件
/TODO# 忽略所有目录下的build目录
build/# 忽略所有以.html结尾的文件,但不忽略在子目录中的
/*.html
- 否定模式
以!开头的模式表示否定,即不被忽略。否定模式可以覆盖之前的忽略模式。
# 忽略所有.a文件
*.a# 但不忽略lib.a
!lib.a
- 注释
使用#开头的行作为注释,Git会忽略这些行。
.gitignore文件的最佳实践
- 为项目类型定制
不同类型的项目有不同的临时文件和构建产物。例如,Node.js项目可能有node_modules目录,而Python项目可能有.pyc文件。因此,.gitignore文件应该根据项目的类型进行定制。
Node.js项目的.gitignore示例:
# 依赖目录
node_modules/# 日志文件
npm-debug.log*
yarn-debug.log*
yarn-error.log*# 编译产物
dist/
build/
- 忽略敏感信息
永远不要将包含敏感信息的文件(如密码、密钥等)纳入版本控制。确保在.gitignore文件中添加这些文件。
# 忽略敏感配置文件
config/secret.json
*.env
- 使用公共模板
对于常见的项目类型,可以在GitHub上找到许多公共的.gitignore模板。例如,创建新项目时,可以在GitHub的仓库创建页面选择适当的模板。
- 共享通用规则
如果多个项目使用相同的.gitignore规则,可以考虑将这些规则放在一个通用的文件中,并使用Git的子模块功能来共享。
- 注意否定模式的顺序
由于否定模式可以覆盖之前的忽略模式,因此需要注意它们的顺序。通常,更具体的模式应该放在更通用的模式之前。
常见问题与解决
-
我已经提交了不应该被追踪的文件,怎么办?
首先,更新
.gitignore文件以忽略这些文件。然后,使用git rm --cached <file>命令从Git的追踪中移除它们,但不从文件系统中删除。最后,提交更改。 -
为什么Git没有忽略我指定的文件?
- 确保
.gitignore文件位于正确的位置(通常是项目的根目录)。 - 检查
.gitignore文件的语法是否正确。 - 如果文件已经被Git追踪,
.gitignore不会对其生效。需要先停止追踪该文件。
- 确保
-
我应该将.gitignore文件纳入版本控制吗?
是的,通常应该将
.gitignore文件纳入版本控制。这样,其他开发者可以共享相同的忽略规则。
总结
.gitignore文件是Git版本控制中不可或缺的一部分,它帮助我们保持仓库的整洁,避免敏感信息泄露,以及减少不必要的冲突。通过本文的介绍,你应该已经掌握了编写.gitignore文件的基本语法和最佳实践,并能够解决常见问题。记住,好的.gitignore文件是团队协作的基石之一。
相关文章:
如何编写.gitignore文件
文章目录 前端架构师教你如何编写.gitignore文件.gitignore文件简介.gitignore文件的语法规则.gitignore文件的最佳实践常见问题与解决 前端架构师教你如何编写.gitignore文件 .gitignore文件简介 .gitignore文件是Git版本控制系统中一个非常有用的工具。它可以指定一组文件或…...
U-Boot学习(7):内核启动之bootz启动zImage源码分析
在上一节中,我们分析了U-BOOT初始化的流程,最后就是进入U-Boot的命令行中执行了,如果用户没有任何操作,则经过固定延时后将执行默认的bootcmd环境变量里的指令,那这里面肯定就是启动内核了。在U-BOOT简介及命令行指令详…...
[GN] DP学习笔记板子
文章目录 Bitset滚动数组多重背包区间DP树形dp状压dp模拟退火 Bitset 使用bitset需要引用<bitset>头文件。 其声明方法为: std::bitset<N>s; (N为s长度)常用函数: b.any() 判断b中是否存在值为1的二进制位 b.none() 判断b中是否不存在值为1的二…...
GLog开源库使用
Glog地址:https://github.com/google/glog 官方文档:http://google-glog.googlecode.com/svn/trunk/doc/glog.html 1.利用CMake进行编译,生成VS解决方案 (1)在glog-master文件夹内新建一个build文件夹,用…...
微信小程序如何实现点击上传图片功能
如下所示,实际需求中常常存在需要点击上传图片的功能,上传前显示边框表面图片显示大小,上传后将图形缩放到边框大小。 实现如下: .wxml <view class="{{img_src==?blank-area:}}" style="width:100%;height:40%;display:flex;align-items: center;jus…...
Windows Qt C++ VTK 绘制三维曲线
Qt 自带数据可视化从文档上看,只能实现三维曲面。 QwtPlot3D在Qt6.6.0上没编译通过。 QCustomPlot 只能搞二维。 VTK~搞起。抄官网demo。 后续需求: 1、对数轴 2、Y轴逆序 3、Z轴值给色带,类似等高线图的色带 期待各位大佬多多指导。…...
Android T 远程动画显示流程(更新中)
序 本地动画和远程动画区别是什么? 本地动画:自给自足。对自身SurfaceControl矢量动画进行控制。 远程动画:拿来吧你!一个app A对另一个app B通过binder跨进程通信,控制app B的SurfaceControl矢量动画。 无论是本地动画还是远程…...
【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】
说明: 仅供学习使用。 一、题目描述 题目共4问,描述网络通信中的 帧传输时延(Frame Delay)、传播时延(Propagation Delay),以及 链接利用率(Link Utilization) 的相关…...
云计算HCIE备考经验分享
大家好,我是来自深圳信息职业技术学院22级鲲鹏3-1班的刘同学,在2023年9月19日成功通过了华为云计算HCIE认证,并且取得了A的成绩。下面把我的考证经验分享给大家。 转专业进鲲鹏班考HCIE 大一上学期的时候,在上Linux课程的时候&…...
Threejs API——`OrbitControls`相机控件
文章目录 API用法API OrbitControls 相机控制用法 导入import {OrbitControls } from three/examples/jsm/controls/OrbitControls.js import {DRACOLoader,AmbientLight,Color,MOUSE,...
远程教育:低代码在教育技术领域的重塑之力
新冠肺炎大流行对世界各地的行业产生了影响,其中一些行业的影响远远超过其他行业。食品、零售、供应链、娱乐和航空业是受影响最大的行业,为确保不间断运营,这引发了一场数字革命。相信,这种数字化的采用将长期保持下去࿰…...
vue 模板语法值class操作
class.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>class</title><!-- 确保引入正确的Vue版本库,下面只是示例,需要替换为实际可工作的CDN地址 --><sc…...
MySQL的原生API实现插入数据后在可视化工具上不显示的问题解决
显示表中有两行数据,该表也设置了主键和唯一索引 点进表里看却没有数据 问题原因出现在这里,虽然很多常用的数据库连接池都会开启自动提交,但ibatis的SqlSession使用sessionFactory.openSession()创建时,默认的自动提交是false&am…...
Blender教程(基础)-内插面、分离、环切、倒角-08
一、内插面 菜单位置如下图位置。 单击需要处理的面,出现一个黄色的圈。 1、菜单选中内插 鼠标悬停在黄色圈内单击左键可以来回实现内插,但是发现并不好操作。 2、快捷键内插 在选中需要操作的面之后,鼠标移动到外面,键盘在英…...
Unity 自动轮播、滑动轮播
如图所示,可设置轮播间隔,可左右滑动进行轮播 1.在UGUI创建个Image,添加自动水平组件 2.添加并配置脚本 3.代码如下,都有注释 using UnityEngine; using UnityEngine.UI;public class IndicatorManager : MonoBehaviour {public …...
纯html+js+css个人博客
首页 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8"><title>主页</title><!-- 引入layui css文件 --><link rel"stylesheet" href"layui-…...
二百二十一、HiveSQL报错:return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
一、目的 在运行HiveSQL时,执行报错 tatement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask 二、在yarn上查看任务报错 The required MAP capability is more than the supported max container capability in t…...
JavaEE学习笔记 2024-1-25 --VUE的入门使用
上一篇 个人整理非商业用途,欢迎探讨与指正!! 文章目录 14.VUE基础14.1VUE的入门使用14.2条件判断14.3循环渲染14.4v-bind绑定标签属性14.5v-model表单标签的双向绑定14.6事件处理14.7axios 14.VUE基础 前端框架 UI框架:页面渲染Bootstrap,L…...
php-fpm详细讲解
PHP-FPM(FastCGI Process Manager)是PHP的一种运行模式,用于处理动态HTTP请求。 它与传统的模块式PHP(如Apache模块)相比,将PHP解析和执行过程单独封装为一个独立的进程池,通过FastCGI协议与We…...
小白水平理解面试经典题目LeetCode 455 Assign Cookies【Java实现】
455 分配cookies 小白渣翻译: 假设你是一位很棒的父母,想给你的孩子一些饼干。但是,你最多应该给每个孩子一块饼干。 每个孩子 i 都有一个贪婪因子 g[i] ,这是孩子满意的 cookie 的最小大小;每个 cookie j 都有一个…...
西门子S7-200SMART PLC与组态王7.0通信在压铸机控制中的应用:附带完整程序与多媒体资料
西门子S7-200SMART PLC和组态王7.0通信 控制压铸机 附带PLC程序组态王程序组态王运行视频组态王运行图片 最近在折腾压铸机自动化改造项目,用西门子S7-200 SMART PLC配合组态王7.0做上位监控。这个组合在中小型设备上还挺常见,但实际调试时通信配置这块…...
保姆级教程:用Ultralytics库把YOLOv11模型导出成ONNX/TensorRT格式(附参数详解)
保姆级教程:用Ultralytics库把YOLOv11模型导出成ONNX/TensorRT格式(附参数详解) 当你完成YOLOv11模型的训练后,下一步就是将其部署到实际应用中。模型导出是部署的关键环节,直接影响推理性能和硬件兼容性。本文将带你深…...
基于MATLAB平台PCA的人脸识别:开启识别新征程
基于MATLAB平台PCA的人脸识别,程序已调通,可将自己的数据替换进行识别。 得到识别准确率结果。最近在研究人脸识别技术,基于MATLAB平台利用PCA(主成分分析)实现了一个人脸识别程序,现在跟大家分享分享。 PC…...
GHelper终极指南:用轻量化工具彻底替代Armoury Crate,释放华硕ROG笔记本全部性能!
GHelper终极指南:用轻量化工具彻底替代Armoury Crate,释放华硕ROG笔记本全部性能! 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RG…...
论文AI率过高怎么降?实测有效方法+免费工具推荐
当前不少学生和科研人员在写论文时都遇到过AIGC率超标的问题,不用焦虑,只要找对方法,就能有效消除AI生成痕迹,顺利通过学校的AIGC检测。 一、AIGC检测的核心逻辑是什么? 很多人会疑惑:明明是自己逐字敲的论…...
COMSOL电磁超声仿真技术:基于5.6版本模型,精确检测L形铝板裂纹的电磁超声测量方法
COMSOL电磁超声仿真: Crack detection in L-shaped aluminum plate via electromagnetic ultrasonic measurements 版本为5.6,低于5.6的版本打不开此模型电磁超声检测(EMAT)在工业无损检测领域一直是个热门方向,最近在COMSOL 5.6上…...
C++ 模板元编程性能优化技巧
C模板元编程性能优化技巧 在现代C开发中,模板元编程(TMP)因其编译期计算能力而备受推崇,能够在运行时实现零开销抽象。不当使用可能导致编译时间膨胀或代码可读性下降。本文将介绍几项关键优化技巧,帮助开发者高效利用…...
PHP 8新特性盘点
PHP 8 新特性概览PHP 8 引入了多项重大改进和新功能,以下为关键特性总结:JIT 编译器即时编译:通过 JIT(Just-In-Time)编译器提升性能,尤其适用于 CPU 密集型任务。配置选项:在 php.ini 中可通过…...
Midscene + 本地Ollama-Qwen3-VL 部署操作文档(含踩坑指南)
Midscene 本地Ollama-Qwen3-VL 部署操作文档(含踩坑指南) 一、文档说明 本文档适用于 Windows 环境(以暗影精灵11为例:i9-14900HX 32G内存 RTX5070 8G),完整覆盖从环境安装、模型部署、脚本开发到调试…...
如何利用 HTML 结构优化网页内容结构_通过 HTML 结构优化内容层次化对 SEO 的作用是什么
如何利用 HTML 结构优化网页内容结构_通过 HTML 结构优化内容层次化对 SEO 的作用是什么 在当今的互联网时代,搜索引擎优化(SEO)已经成为网站成功的关键因素之一。一个好的 SEO 策略不仅能够提高网站的可见度,还能够吸引更多的访…...
