如何编写.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 都有一个…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
