当前位置: 首页 > news >正文

如何编写.gitignore文件

文章目录

  • 前端架构师教你如何编写.gitignore文件
    • .gitignore文件简介
    • .gitignore文件的语法规则
    • .gitignore文件的最佳实践
    • 常见问题与解决

前端架构师教你如何编写.gitignore文件

.gitignore文件简介

.gitignore文件是Git版本控制系统中一个非常有用的工具。它可以指定一组文件或目录,这些文件或目录将被Git忽略,不会纳入版本控制。这对于避免提交临时文件、构建产物、敏感配置信息等非常有用。

.gitignore文件的语法规则

  1. 忽略文件或目录

.gitignore文件中,每行可以指定一个模式。模式可以是文件名、目录名,也可以是使用通配符的模式。例如:

# 忽略所有.log文件
*.log# 忽略名为temp的目录
temp/
  1. 使用通配符
  • * 匹配任意数量的字符,但不包括目录分隔符/
  • ** 匹配任意数量的字符,包括目录分隔符/,用于递归匹配。
  • ? 匹配单个字符。
  • [abc] 匹配括号内任一字符。
# 忽略所有.txt文件
*.txt# 忽略所有目录下的.tmp文件
**/*.tmp# 忽略a.out, b.out等
*.out

[]用的比较少,因为.gitignore不支持复杂写法

# 忽略所有以a、b或c开头的.txt文件
[abc].txt

这意味着Git将忽略任何文件名恰好为a.txtb.txtc.txt的文件,但不会忽略d.txt或其他不以abc之一开头的.txt文件。

需要注意的是,这个模式只匹配单个字符。如果你想匹配多个字符中的任意一个,你需要使用其他模式,比如*通配符来匹配任意数量的任意字符,或者使用?来匹配任意单个字符。

举个例子,如果你想忽略所有以abc开头,并且扩展名为.log的文件,你应该这样写:

[abc]*.log

但这个模式实际上是错误的,因为它会尝试匹配以abc开头,后面跟着任意数量的任意字符,再后面是.log的文件。正确的模式应该是使用**来递归匹配任意数量的目录和文件名,如下:

**[abc]*.log

但这个模式也是不正确的,因为它会尝试匹配包含abc任意位置的.log文件。实际上,Gitignore的模式并不支持这种复杂的字符类与通配符的结合。要实现这个需求,你可能需要为每个情况单独写一行:

a*.log
b*.log
c*.log

或者,如果你的意图是忽略所有扩展名为.log的文件,不论它们是否以abc开头,你只需要简单地写:

*.log

请确保你理解你的.gitignore模式实际上是如何工作的,以避免意外的文件被忽略或未被忽略。

  1. 锚定模式

如果模式的开头或结尾包含目录分隔符/,则模式仅匹配以该目录分隔符开头或结尾的路径。

# 只忽略项目根目录下的TODO文件
/TODO# 忽略所有目录下的build目录
build/# 忽略所有以.html结尾的文件,但不忽略在子目录中的
/*.html
  1. 否定模式

!开头的模式表示否定,即不被忽略。否定模式可以覆盖之前的忽略模式。

# 忽略所有.a文件
*.a# 但不忽略lib.a
!lib.a
  1. 注释

使用#开头的行作为注释,Git会忽略这些行。

.gitignore文件的最佳实践

  1. 为项目类型定制

不同类型的项目有不同的临时文件和构建产物。例如,Node.js项目可能有node_modules目录,而Python项目可能有.pyc文件。因此,.gitignore文件应该根据项目的类型进行定制。

Node.js项目的.gitignore示例:

# 依赖目录
node_modules/# 日志文件
npm-debug.log*
yarn-debug.log*
yarn-error.log*# 编译产物
dist/
build/
  1. 忽略敏感信息

永远不要将包含敏感信息的文件(如密码、密钥等)纳入版本控制。确保在.gitignore文件中添加这些文件。

# 忽略敏感配置文件
config/secret.json
*.env
  1. 使用公共模板

对于常见的项目类型,可以在GitHub上找到许多公共的.gitignore模板。例如,创建新项目时,可以在GitHub的仓库创建页面选择适当的模板。

  1. 共享通用规则

如果多个项目使用相同的.gitignore规则,可以考虑将这些规则放在一个通用的文件中,并使用Git的子模块功能来共享。

  1. 注意否定模式的顺序

由于否定模式可以覆盖之前的忽略模式,因此需要注意它们的顺序。通常,更具体的模式应该放在更通用的模式之前。

常见问题与解决

  1. 我已经提交了不应该被追踪的文件,怎么办?

    首先,更新.gitignore文件以忽略这些文件。然后,使用git rm --cached <file>命令从Git的追踪中移除它们,但不从文件系统中删除。最后,提交更改。

  2. 为什么Git没有忽略我指定的文件?

    • 确保.gitignore文件位于正确的位置(通常是项目的根目录)。
    • 检查.gitignore文件的语法是否正确。
    • 如果文件已经被Git追踪,.gitignore不会对其生效。需要先停止追踪该文件。
  3. 我应该将.gitignore文件纳入版本控制吗?

    是的,通常应该将.gitignore文件纳入版本控制。这样,其他开发者可以共享相同的忽略规则。

总结

.gitignore文件是Git版本控制中不可或缺的一部分,它帮助我们保持仓库的整洁,避免敏感信息泄露,以及减少不必要的冲突。通过本文的介绍,你应该已经掌握了编写.gitignore文件的基本语法和最佳实践,并能够解决常见问题。记住,好的.gitignore文件是团队协作的基石之一。

相关文章:

如何编写.gitignore文件

文章目录 前端架构师教你如何编写.gitignore文件.gitignore文件简介.gitignore文件的语法规则.gitignore文件的最佳实践常见问题与解决 前端架构师教你如何编写.gitignore文件 .gitignore文件简介 .gitignore文件是Git版本控制系统中一个非常有用的工具。它可以指定一组文件或…...

U-Boot学习(7):内核启动之bootz启动zImage源码分析

在上一节中&#xff0c;我们分析了U-BOOT初始化的流程&#xff0c;最后就是进入U-Boot的命令行中执行了&#xff0c;如果用户没有任何操作&#xff0c;则经过固定延时后将执行默认的bootcmd环境变量里的指令&#xff0c;那这里面肯定就是启动内核了。在U-BOOT简介及命令行指令详…...

[GN] DP学习笔记板子

文章目录 Bitset滚动数组多重背包区间DP树形dp状压dp模拟退火 Bitset 使用bitset需要引用<bitset>头文件。 其声明方法为: std::bitset<N>s; (N为s长度)常用函数&#xff1a; b.any() 判断b中是否存在值为1的二进制位 b.none() 判断b中是否不存在值为1的二…...

GLog开源库使用

Glog地址&#xff1a;https://github.com/google/glog 官方文档&#xff1a;http://google-glog.googlecode.com/svn/trunk/doc/glog.html 1.利用CMake进行编译&#xff0c;生成VS解决方案 &#xff08;1&#xff09;在glog-master文件夹内新建一个build文件夹&#xff0c;用…...

微信小程序如何实现点击上传图片功能

如下所示,实际需求中常常存在需要点击上传图片的功能,上传前显示边框表面图片显示大小,上传后将图形缩放到边框大小。 实现如下: .wxml <view class="{{img_src==?blank-area:}}" style="width:100%;height:40%;display:flex;align-items: center;jus…...

Windows Qt C++ VTK 绘制三维曲线

Qt 自带数据可视化从文档上看&#xff0c;只能实现三维曲面。 QwtPlot3D在Qt6.6.0上没编译通过。 QCustomPlot 只能搞二维。 VTK~搞起。抄官网demo。 后续需求&#xff1a; 1、对数轴 2、Y轴逆序 3、Z轴值给色带&#xff0c;类似等高线图的色带 期待各位大佬多多指导。…...

Android T 远程动画显示流程(更新中)

序 本地动画和远程动画区别是什么? 本地动画&#xff1a;自给自足。对自身SurfaceControl矢量动画进行控制。 远程动画&#xff1a;拿来吧你&#xff01;一个app A对另一个app B通过binder跨进程通信&#xff0c;控制app B的SurfaceControl矢量动画。 无论是本地动画还是远程…...

【计算机网络】【练习题及解答】【新加坡南洋理工大学】【Computer Control Network】

说明&#xff1a; 仅供学习使用。 一、题目描述 题目共4问&#xff0c;描述网络通信中的 帧传输时延&#xff08;Frame Delay&#xff09;、传播时延&#xff08;Propagation Delay&#xff09;&#xff0c;以及 链接利用率&#xff08;Link Utilization&#xff09; 的相关…...

云计算HCIE备考经验分享

大家好&#xff0c;我是来自深圳信息职业技术学院22级鲲鹏3-1班的刘同学&#xff0c;在2023年9月19日成功通过了华为云计算HCIE认证&#xff0c;并且取得了A的成绩。下面把我的考证经验分享给大家。 转专业进鲲鹏班考HCIE 大一上学期的时候&#xff0c;在上Linux课程的时候&…...

Threejs API——`OrbitControls`相机控件

文章目录 API用法API OrbitControls 相机控制用法 导入import {OrbitControls } from three/examples/jsm/controls/OrbitControls.js import {DRACOLoader,AmbientLight,Color,MOUSE,...

远程教育:低代码在教育技术领域的重塑之力

新冠肺炎大流行对世界各地的行业产生了影响&#xff0c;其中一些行业的影响远远超过其他行业。食品、零售、供应链、娱乐和航空业是受影响最大的行业&#xff0c;为确保不间断运营&#xff0c;这引发了一场数字革命。相信&#xff0c;这种数字化的采用将长期保持下去&#xff0…...

vue 模板语法值class操作

class.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>class</title><!-- 确保引入正确的Vue版本库&#xff0c;下面只是示例&#xff0c;需要替换为实际可工作的CDN地址 --><sc…...

MySQL的原生API实现插入数据后在可视化工具上不显示的问题解决

显示表中有两行数据&#xff0c;该表也设置了主键和唯一索引 点进表里看却没有数据 问题原因出现在这里&#xff0c;虽然很多常用的数据库连接池都会开启自动提交&#xff0c;但ibatis的SqlSession使用sessionFactory.openSession()创建时&#xff0c;默认的自动提交是false&am…...

Blender教程(基础)-内插面、分离、环切、倒角-08

一、内插面 菜单位置如下图位置。 单击需要处理的面&#xff0c;出现一个黄色的圈。 1、菜单选中内插 鼠标悬停在黄色圈内单击左键可以来回实现内插&#xff0c;但是发现并不好操作。 2、快捷键内插 在选中需要操作的面之后&#xff0c;鼠标移动到外面&#xff0c;键盘在英…...

Unity 自动轮播、滑动轮播

如图所示&#xff0c;可设置轮播间隔&#xff0c;可左右滑动进行轮播 1.在UGUI创建个Image&#xff0c;添加自动水平组件 2.添加并配置脚本 3.代码如下&#xff0c;都有注释 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时&#xff0c;执行报错 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的入门使用

上一篇 个人整理非商业用途&#xff0c;欢迎探讨与指正&#xff01;&#xff01; 文章目录 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&#xff08;FastCGI Process Manager&#xff09;是PHP的一种运行模式&#xff0c;用于处理动态HTTP请求。 它与传统的模块式PHP&#xff08;如Apache模块&#xff09;相比&#xff0c;将PHP解析和执行过程单独封装为一个独立的进程池&#xff0c;通过FastCGI协议与We…...

小白水平理解面试经典题目LeetCode 455 Assign Cookies【Java实现】

455 分配cookies 小白渣翻译&#xff1a; 假设你是一位很棒的父母&#xff0c;想给你的孩子一些饼干。但是&#xff0c;你最多应该给每个孩子一块饼干。 每个孩子 i 都有一个贪婪因子 g[i] &#xff0c;这是孩子满意的 cookie 的最小大小&#xff1b;每个 cookie j 都有一个…...

Apple Silicon Mac 电池管理的终极解决方案:Battery Toolkit 完整指南

Apple Silicon Mac 电池管理的终极解决方案&#xff1a;Battery Toolkit 完整指南 【免费下载链接】Battery-Toolkit Control the platform power state of your Apple Silicon Mac. 项目地址: https://gitcode.com/gh_mirrors/ba/Battery-Toolkit 在当今移动办公时代&a…...

18分钟攻陷GitHub!Nx Console投毒事件深度复盘:3800个核心仓库泄露的供应链安全警示

摘要&#xff1a;2026年5月20日&#xff0c;全球最大代码托管平台GitHub遭遇史上最严重的供应链攻击之一。黑客组织TeamPCP通过投毒VS Code扩展市场中的Nx Console v18.95.0版本&#xff0c;仅用18分钟、28次下载就成功渗透GitHub内部网络&#xff0c;窃取了包括Copilot、CodeQ…...

别再手动触发ADC了!用STM32CubeMX配置定时器触发+DMA搬运,实现精准采样(附F1/F4差异说明)

STM32CubeMX定时器触发ADCDMA全自动采样实战指南 在嵌入式数据采集系统中&#xff0c;ADC采样的精准度和效率直接影响整个系统的性能表现。传统的手动触发方式不仅占用CPU资源&#xff0c;还难以保证采样间隔的一致性。本文将深入解析如何利用STM32CubeMX配置定时器触发ADC配合…...

戴森球计划终极蓝图指南:3000+工厂设计快速提升建造效率

戴森球计划终极蓝图指南&#xff1a;3000工厂设计快速提升建造效率 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints 还在为《戴森球计划》中复杂的工厂布局而烦恼吗&#xf…...

Spring Cloud微服务里,如何用XXL-JOB搞定订单15分钟未支付自动关闭?

Spring Cloud微服务中基于XXL-JOB的订单超时自动关闭实战方案 电商平台的订单超时自动关闭是一个典型的高并发业务场景。想象一下&#xff0c;当用户下单后未支付&#xff0c;系统需要在15分钟后自动释放库存并关闭订单。传统做法可能采用数据库轮询或延迟队列&#xff0c;但在…...

别再只盯着电池百分比了!Windows 11 这个隐藏命令,一键生成你的笔记本电池“体检报告”

别再只盯着电池百分比了&#xff01;Windows 11 这个隐藏命令&#xff0c;一键生成你的笔记本电池“体检报告”每次看到笔记本电量只剩20%就焦虑地找充电器&#xff1f;你可能忽略了更重要的数据——电池健康度就像人体的体检报告&#xff0c;能告诉你电池真实的"身体状况…...

3步解决洛雪音乐播放问题:六音音源修复完整指南

3步解决洛雪音乐播放问题&#xff1a;六音音源修复完整指南 【免费下载链接】New_lxmusic_source 六音音源修复版 项目地址: https://gitcode.com/gh_mirrors/ne/New_lxmusic_source 你是否遇到过洛雪音乐升级后无法播放歌曲的困扰&#xff1f;点击播放按钮只有加载动画…...

Codex适配国产信创环境安装部署与技术适配全解析

随着国家信创产业持续落地推进&#xff0c;党政、金融、能源、工业等关键行业全面开启信息技术软硬件国产化替代工作。基于自主可控、安全可信的核心需求&#xff0c;传统国外架构软硬件体系逐步被国产操作系统、国产芯片硬件替代。Codex作为主流的智能代码辅助、自动化开发工具…...

直接去偏机器学习:用Bregman散度统一因果推断与协变量平衡

1. 项目概述与核心动机在因果推断、政策评估乃至更广泛的计量经济学和机器学习应用中&#xff0c;我们常常关心一个“目标参数”&#xff0c;比如平均处理效应&#xff08;ATE&#xff09;——也就是某项干预或政策对结果的平均影响。传统上&#xff0c;一个非常自然的想法是&a…...

HHEML:基于FPGA硬件加速的边缘隐私保护机器学习框架

1. 项目概述&#xff1a;当边缘计算遇上隐私保护&#xff0c;一场硬件加速的革新在医疗影像分析、智能门禁、工业质检这些场景里&#xff0c;你肯定不希望自己的X光片、人脸数据或者生产线上的瑕疵图片&#xff0c;在传到云端服务器做AI推理时&#xff0c;被“有心人”看个精光…...