开发者必知:.gitignore 文件的魔法,助你管理项目文件如虎添翼!

前言:

在软件开发的世界中,版本控制是一个至关重要的环节。而 Git 作为目前最流行的分布式版本控制系统之一,已经成为开发者不可或缺的工具。然而,在日常的开发过程中,有些文件是不适合被纳入版本控制的,比如编译产生的临时文件、IDE生成的配置文件等。为了更好地管理版本库,我们需要介绍并深入理解 .gitignore 文件,它能够帮助我们过滤掉那些不应被跟踪的文件。
在这里插入图片描述

内容:

视频教程地址:https://www.bilibili.com/video/BV1fp4y1u7aK/

什么是 .gitignore 文件?

.gitignore 文件是一个文本文件,用于指示 Git 哪些文件或目录应该被忽略,不纳入版本控制。在项目的根目录下创建一个名为 .gitignore 的文件,并在其中列出你希望排除的文件、文件夹或者通配符模式。

基本语法和规则

● 使用 ‘#’ 开头的行被视为注释,可以在文件中添加说明。
● 每一行描述一个需要忽略的模式,可以是文件、文件夹或者通配符。
● 以 ‘/’ 开头表示从项目根目录开始匹配,否则会在项目内所有目录中搜索。
● 以 ‘/’ 结尾表示匹配文件夹,而不是同名文件。
● 通过 ‘!’ 取消忽略,即使之前有忽略规则。

常见用法示例

  1. 忽略特定文件:例如, ‘*.log’ 将忽略所有以 .log 结尾的文件。
  2. 忽略文件夹:例如, ‘node_modules/’ 将忽略整个 node_modules 文件夹。
  3. 使用通配符: ‘build/*.exe’ 将忽略 build 文件夹下所有的 .exe 文件。
  4. 排除特定文件: ‘!config.ini’ 将取消对 config.ini 文件的忽略。

其他示例

如果在 .gitignore 文件中写了test,那么会忽略哪些文件

如果你在 .gitignore 文件中写入了 “test” 这个模式,它将会忽略所有文件名为 “test” 的文件。这包括项目中任何位置的 “test” 文件,无论是文件扩展名是什么,还是它们位于项目的哪个子目录。

例如,如果你的项目结构如下:

- project_folder/- test.txt- src/- test.js- assets/- image_test.png

如果你在 .gitignore 文件中添加了一行 “test”,那么以上这些文件都会被忽略,不会被纳入版本控制。

请注意,.gitignore 文件的匹配是基于字符串的,而不是正则表达式。所以,“test” 将匹配任何包含 “test” 的文件名。如果你只想忽略特定位置或者特定扩展名的文件,需要使用更详细的规则,比如 “/test/” 来匹配文件夹,或者 “*.txt” 来匹配所有的 .txt 文件。

如果二级文件夹下面依旧有.gitignore文件呢

如果你的二级文件夹下面也有一个名为 .gitignore 的文件,那么 Git 会对每个文件夹中的 .gitignore 文件分别进行处理。.gitignore 文件的规则将会根据文件所在的文件夹逐级应用,从而影响文件的版本控制状态。

具体来说,如果你在一个子文件夹中有一个 .gitignore 文件,它会覆盖父文件夹中的规则,并且只会影响该子文件夹及其子目录中的文件。这就意味着你可以在不同的子目录中使用不同的规则来控制版本控制状态。

例如,考虑以下项目结构:

- project/- .gitignore (规则 A)- src/- .gitignore (规则 B)- file1.js- assets/- .gitignore (规则 C)- image.png

● project/.gitignore 中的规则 A 将会影响整个项目根目录。
● project/src/.gitignore 中的规则 B 将会影响 src 文件夹及其子目录。
● project/assets/.gitignore 中的规则 C 将会影响 assets 文件夹及其子目录。

这种分级的 .gitignore 文件允许你在不同层级上定义特定的忽略规则,从而更细粒度地控制文件的版本控制状态。

高级用法与细节

● 你可以在 .gitignore 文件中使用 shell 通配符,如 ‘*’、‘?’、‘[]’ 等。
● 通过 ‘/.gitignore’ 将 .gitignore 文件自身纳入版本控制。
● 在团队协作中,建议将共享的 .gitignore 规则添加到项目中,以确保所有开发者都遵循相同的规范。

总结:

.gitignore 文件在版本控制中扮演着关键的角色,它使得开发者能够更加灵活地管理项目中的文件。通过简单的语法规则,我们可以过滤掉无关的文件,保持版本库的整洁。无论是个人项目还是团队协作,深入理解 .gitignore 文件的使用方法,都能够为项目的开发与维护带来便利与效率。让我们在日常开发中充分利用这一工具,创造更优秀的代码库。

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

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

相关文章

基于Java+SpringBoot+Vue的数码论坛系统设计与实现(源码+LW+部署文档等)

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

【C语言】深度剖析数据在内存中的存储

一、数据类型详细介绍 1、数据类型介绍 (1)基本的内置类型 //内置类型就是C语言自带的类型char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double …

安防监控视频汇聚平台EasyCVR分发的FLV视频流在VLC中无法播放是什么原因?

众所周知,TSINGSEE青犀视频汇聚平台EasyCVR可支持多协议方式接入,包括主流标准协议国标GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。在视频流的处理与分发上,视频监控…

ORACLE行转列、列转行实现方式及案例

ORACLE行转列、列转行实现方式及案例 行转列案例方式1.PIVOT方式2.MAX和DECODE方式3.CASE WHEN和GROUP BY 列转行案例方式1.UNPIVOT方式2.UNION ALL 行转列 案例 假设我们有一个名为sales的表,其中包含了产品销售数据。表中有三列:product(…

FPGA实践 ——Verilog基本实验步骤演示

0x00 回顾:AND/OR/NOT 逻辑的特性 AND:与门可以具有两个或更多的输入,并返回一个输出。当所有输入值都为 1 时,输出值为 1。如果输入值中有任何一个为 0,则输出值为 0。 OR:或门可以具有两个或更多的输入…

【python】-【】

文章目录 转义字符和原字符二进制与字符编码标识符和保留字变量的定义和使用变量字符串列表for 一、print会输出①数字②字符串(必须加引号)③含有运算符的表达式(例如 31 其中3,1是操作数,是运算符)&#…

vector的模拟实现

什么是vector vector是一个封装了动态大小数组的顺序容器跟任意其它类型容器一样,它能够存放各种类型的对象。 模拟实现 实现前的准备 在实现vector之前,为了和库里的区分开需要将实现的vector放在一个自定义的命名空间里。而且vector需要实现成模版…

论文阅读 - Neutral bots probe political bias on social media

论文链接:Neutral bots probe political bias on social media | EndNote Click 试图遏制滥用行为和错误信息的社交媒体平台被指责存在政治偏见。我们部署中立的社交机器人,它们开始关注 Twitter 上的不同新闻源,并跟踪它们以探究平台机制与用…

超导热催生meme,换汤不换药的投机轮回

文/章鱼哥 出品/陀螺财经 币圈对炒作meme概念的热情从未消亡过。 随着一种名为LK-99的物质被发现,围绕超导的兴奋不仅激发了科学界,加密货币相关概念也与之沸腾。不出所料,与此前围绕元宇宙、AI大肆炒作一样,许多meme代币已经出现…

关于MySQL中的binlog

介绍 undo log 和 redo log是由Inno DB存储引擎生成的。 在MySQL服务器架构中,分为三层:连接层、服务层(server层)、执行层(存储引擎层) bin log 是 binary log的缩写,即二进制日志。 MySQL…

android开发之Android 自定义滑动解锁View

自定义滑动解锁View 需求如下: 近期需要做一个类似屏幕滑动解锁的功能,右划开始,左划暂停。 需求效果图如下 实现效果展示 自定义view如下 /** Desc 自定义滑动解锁View Author ZY Mail sunnyfor98gmail.com Date 2021/5/17 11:52 *…

数据结构——线性表

文章目录 线性表的定义和基本操作顺序表线性表的链式表示 线性表的定义和基本操作 线性表是具有相同数据类型的(n≥0)个数据元素的有限序列,其中n为表长,当n0时线性表是一个空表。若用L命名线性表,则其中一般表示为:L(a1,a2,a3, …

CCLINK转MODBUS-TCP网关cclink通讯接线图 终端电阻

大家好,今天我们要聊的是生产管理系统中的CCLINK和MODBUS-TCP协议,它们的不同使得数据互通比较困难,但捷米JM-CCLK-TCP网关的出现改变了这一切。 1捷米JM-CCLK-TCP是一款自主研发的CCLINK从站功能的通讯网关,它的主要功能是将各种…

D455+VINS-Fusion+surfelmapping 稠密建图(三)

继续,由surfelmapping建立的点云生成octomap八叉树栅格地图 一、安装OctomapServer 建图包 安装插件 sudo apt-get install ros-melodic-octomap-ros sudo apt-get install ros-melodic-octomap-msgs sudo apt-get install ros-melodic-octomap-server sudo apt-…

cubemx hal stm32 舵机 可减速 任意位置停止 驱动代码

CubeMX配置 对于 STM32 F407VE 这里的84是来自APB1那路2倍频得到: 代码部分 两个舵机都是180度的 servo.c #include "servo.h" #include "tim.h" #include "stdio.h"__IO uint32_t g_SteerUWT[2] {0}; uint16_t g_SteerDeg[…

青大数据结构【2014】

一、单选 二、简答 为了解决顺序队列的假溢出问题,提出了循环队列,即把存储队列的表从逻辑上看成一个环 判别队列空和满有三种方法: 1)采用计数器判别,空时,计数器为0;满时,计数器…

【设计模式——学习笔记】23种设计模式——中介者模式Mediator(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入案例一普通实现中介者模式 案例二 介绍基础介绍登场角色尚硅谷 《图解设计模式》 案例实现案例一:智能家庭类图实现 案例二:登录页面逻辑实现说明类图实现 总结文章说明 案例引入 案例一 普通实现 在租房过程中,客户可能…

css 实现 html 元素内文字水平垂直居中的N种方法

上一篇博文写了div 中元素居中的N种常用方法,那么单个html元素:div(块级元素代表),span(行内元素代表)中的文字如何水平垂直都居中呢?实现方法如下: 本文例子使用的 html…

机器学习---对数几率回归

1. 逻辑回归 逻辑回归(Logistic Regression)的模型是一个非线性模型, sigmoid函数,又称逻辑回归函数。但是它本质上又是一个线性回归模型,因为除去sigmoid映射函 数关系,其他的步骤,算法都是…

阿里云预装LAMP应用导致MySQL不显示访问密码如何解决

😀前言 本篇博文是关于阿里云云服务器ECS部署MySQL过程中出现的一下坑,希望能够帮助到您😊 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家…