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

news2024/11/25 2:26:51

前言:

在软件开发的世界中,版本控制是一个至关重要的环节。而 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.coloradmin.cn/o/873287.html

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

相关文章

【C++入门】const 成员函数

文章目录 一、基本概念二、经典问题三、使用建议 一、基本概念 const 修饰的成员函数就称作 const 成员函数。 例子: class Date { public:void Display() const{...}private:int _year;int _month;int _day; };事实上,const 成员函数的这个 const 修…

Linux文件系统管理

Linux文件系统管理 磁盘的组成与分区 计算机用于存取文件的硬件是磁盘,磁盘的组成主要有磁盘盘、机械手臂、磁盘读取头与主轴马达所组成, 而数据的写入其实是在磁盘盘上面。磁盘盘上面又可细分出扇区(Sector)与磁道(Track)两种单位, 其中扇区…

YOLOv5入门实践(3)— 手把手教你如何去划分数据集

前言:Hello大家好,我是小哥谈。数据集标注完成之后,下一步就是对这些数据集进行划分了。面对繁杂的数据集,如果手动划分的话,不仅麻烦而且不能保持随机性。本节课就给大家介绍一种方法,即使用代码去划分数据…

Express 实战(一):概览

在正式学习 Express 内容之前,我们有必要从大的方面了解一下 Node.js 。 在很长的一段时间里,JavaScript 一门编写浏览器中运行脚本的语言。不过近些年,随着互联网的发展以及技术进步,JavaScript 迎来了一个集中爆发的时代。一个…

思科交换机和路由器使用TFTP备份和还原配置文件

(1)给交换机配置管理地址,保证交换机与服务器相连通 SW1(config)#int vlan 1 SW1(config-if)#ip add 192.168.1.1 255.255.255.0 SW1(config-if)#no shut SW1#write (2)备份startup-config到服务器 SW1#copy startup…

【linux教程学习笔记】

目录 一. Linux系统目录结构 ​编辑 二. Linux文件基本属性 1. 文件属性分析 2. 更改文件属性 2.1. chgrp:change group,更改文件所属的组 2. chown:change owner,更改文件所属的用户,也可同时更改文件所属的组…

UG NX二次开发(C#)-CAM-获取刀具类型

文章目录 1、前言2、UG NX中的刀具类型3、获取刀具类型3.1 刀具类型帮助文档1、前言 在UG NX的加工模块,加工刀具是一个必要的因素,其包括了多种类型的类型,有铣刀、钻刀、车刀、磨刀、成型刀等等,而且每种刀具所包含的信息也各不相同。想获取刀具的信息,那就要知道刀具的…

php如何对接伪原创api

在了解伪原创api的各种应用形态之后,我们继续探讨智能写作背后的核心技术。需要说明的是,智能写作和自然语言生成、自然语言理解、知识图谱、多模算法等各类人工智能算法都有紧密的关联,在百度的智能写作实践中,常根据实际需求将多…

RT-Thread Smart 用户态开发体验

背景 RT-Thread Smart 是基于 RT-Thread 操作系统上的混合操作系统,它把应用从内核中独立出来,形成独立的用户态应用程序,并具备独立的地址空间。 自 V5.0.0 起,rt-smart 分支已合并至 master 分支上,下载 rt-thread …

2023年上半年数学建模竞赛题目汇总与难度分析

2023年上半年数学建模竞赛题目汇总与难度分析 ​由于近年来国赛ABC题出题方式漂浮不定,没有太大的定性,目前总体的命题方向为,由之前的单一模型问题变为数据分析评价优化或者预测类题目是B、C题的主要命题方向。为了更好地把握今年命题的主方…

快捷键使用技巧

IDEA生成序列化ID 1 CtrlAlts快捷键打开设置界面 2 选择Editor→Inspections,勾上serialVersionUID 3 每次实现序列化接口,可以鼠标点击类名,AltEnter快捷键导入序列化ID webstorm 快捷键重构 shiftf6 全局替换 通过快捷键CtrlShiftR打…

带扩散器的超快速控制网

一、说明 自从稳定扩散风靡全球以来,人们一直在寻找更好地控制生成过程结果的方法。ControlNet提供了一个最小的界面,允许用户在很大程度上自定义生成过程。使用 ControlNet,用户可以轻松地使用不同的空间上下文(如深度图、分割图…

Cpp学习——vector模拟实现

vector简介 在模拟实现vector之前,首先就得知道vector是个啥?vector是个啥呢?vector是一个stl里面的容器,并且是一个模板容器。它就像是一个顺序表模板。还记得顺序表吧?之前我实现的顺序表只能弄整形的数据&#xff0…

深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级)

深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级) 一.进程概念(PCB/task_struct)二.查看进程(top/ps)三.创建进程(fork)四.进程状态(僵尸进程/孤儿进程)五.进程优先级(PRI/NI) 一.进程概念(PCB/task_struct) 1.什么…

不同路径——力扣62

文章目录 题目描述解法一 动态规划题目描述 解法一 动态规划 int uniquePaths(int m, int n) {vector<vector

【Java】项目管理工具Maven的安装与使用

文章目录 1. Maven概述2. Maven的下载与安装2.1 下载2.2 安装 3. Maven仓库配置3.1 修改本地仓库配置3.2 修改远程仓库配置3.3 修改后的settings.xml 4. 使用Maven创建项目4.1 手工创建Java项目4.2 原型创建Java项目4.3 原型创建Web项目 5. Tomcat启动Web项目5.1 使用Tomcat插件…

LeetCode150道面试经典题-- 两数之和(简单)

1.题目 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意…

pytest框架快速进阶篇-pytest前置和pytest后置,skipif跳过用例

一、Pytest的前置和后置方法 1.Pytest可以集成unittest实现前置和后置 importunittestimportpytestclassTestCase(unittest.TestCase):defsetUp(self)->None:print(unittest每个用例前置)deftearDown(self)->None:print(unittest每个用例后置)classmethoddefsetUpClass…

JDK17下载与安装(完整图文教程含安装包)

1.下载JDK17安装包 官网下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/ 同时提供一份网盘下载地址&#xff0c;大家按需自取&#xff1a;点击下载 JDK 所有版本的安装方法都一样&#xff0c;其他版本也不用重复找教程了。 网盘直接放了 JDK 6 – …

Python教程(8)——一文弄懂Python字符串操作(下)

Python字符串操作 字符串常用方法字符串更多方法介绍 字符串常用方法 字符串在编程中是一种不可或缺的数据类型&#xff0c;它在文本和字符数据时提供了丰富而强大的功能。掌握了字符串的使用方法&#xff0c;你能够更加便捷地进行文本处理、数据操作、用户交互等任务&#xf…