.gitignore 文件——如何在 Git 中忽略文件和文件夹详细教程

文章目录

  • 什么是 .gitignore 文件?.gitignore 文件是用来做什么的?
  • 如何创建一个 .gitignore 文件?
  • 在 .gitignore 文件中应包括什么?
  • 如何在 Git 中忽略一个文件和文件夹
  • 如何忽略以前提交的文件

什么是 .gitignore 文件?.gitignore 文件是用来做什么的?

在任何当前工作的 Git 仓库中,每个文件都是这样的:

  • 追踪的(tracked)- 这些是 Git 所知道的所有文件或目录。这些是新添加(用 git add 添加)和提交(用 git commit 提交)到主仓库的文件和目录。
  • 未被追踪的(untracked) - 这些是在工作目录中创建的,但还没有被暂存(或用 git add 命令添加)的任何新文件或目录。
  • 被忽略的(ignored) - 这些是 Git 知道的要全部排除、忽略或在 Git 仓库中不需要注意的所有文件或目录。本质上,这是一种告诉 Git 哪些未被追踪的文件应该保持不被追踪并且永远不会被提交的方法。

所有被忽略的文件都会被保存在一个 .gitignore 文件中。

.gitignore 文件是一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的。

.gitignore 中,你可以通过提及特定文件或文件夹的名称或模式来告诉 Git 只忽略一个文件或一个文件夹。你也可以用同样的方法告诉 Git 忽略多个文件或文件夹。

如何创建一个 .gitignore 文件?

通常,一个 .gitignore 文件会被放在仓库的根目录下。根目录也被称为父目录和当前工作目录。根目录包含了组成项目的所有文件和其他文件夹。

也就是说,你可以把它放在版本库的任何文件夹中。你甚至可以有多个 .gitignore 文件。

要在基于 Unix 的系统(如 macOS 或 Linux)上用命令行创建一个 .gitignore 文件,打开终端程序(如 macOS 上的 Terminal.app)。然后,用 cd 命令导航到包含项目的根文件夹,并输入以下命令,为你的目录创建一个 .gitignore 文件:

touch .gitignore

名字前面有点(.)的文件默认是隐藏的。

当单独使用 ls 命令时,隐藏的文件是不可见的。要从命令行查看所有的文件–包括隐藏的文件–请在 ls 命令中使用 -a 标志,如图所示:

ls -a

在 .gitignore 文件中应包括什么?

你应该考虑添加到 .gitignore 文件中的文件类型是任何不需要被提交的文件。

你可能出于安全原因不想提交它们,或者因为它们是你的本地文件,因此对与你在同一项目上工作的其他开发者来说是不必要的。

其中一些可能包括:

  • 操作系统文件。每个操作系统(如 macOS、Windows 和 Linux)都会生成系统特定的隐藏文件,其他开发者不需要使用这些文件,因为他们的系统也会生成这些文件。例如,在 macOS 上,Finder 会生成一个 .DS_Store 文件,其中包括用户对文件夹的外观和显示的偏好,如图标的大小和位置。
  • 由代码编辑器和 IDE(IDE 代表集成开发环境)等应用程序生成的配置文件。这些文件是为你、你的配置和你的偏好设置定制的。
  • 从你的项目中使用的编程语言或框架自动生成的文件,以及编译后的代码特定文件,如 .o 文件。
  • 由软件包管理器生成的文件夹,如 npm 的 node_modules 文件夹。这是一个用于保存和跟踪你在本地安装的每个软件包的依赖关系的文件夹。
  • 包含敏感数据和个人信息的文件。这类文件的一些例子是含有你的凭证(用户名和密码)的文件和含有环境变量的文件,如 .env 文件(.env 文件含有需要保持安全和隐私的 API 密钥)。
  • 运行时文件,如 .log 文件。它们提供关于操作系统的使用活动和错误的信息,以及在操作系统中发生的事件的历史。

如何在 Git 中忽略一个文件和文件夹

如果你想只忽略一个特定的文件,你需要提供该文件在项目根目录下的完整路径。

例如,如果你想忽略位于根目录下的 text.txt 文件,你可以做如下操作:

/text.txt

而如果你想忽略一个位于根目录下的 test 目录中的 text.txt 文件,你要做的是:

/test/text.txt

你也可以这样写上述内容:

test/text.txt

如果你想忽略所有具有特定名称的文件,你需要写出该文件的字面名称。

例如,如果你想忽略任何 text.txt 文件,你可以在 .gitignore 中添加以下内容:

text.txt

在这种情况下,你不需要提供特定文件的完整路径。这种模式将忽略位于项目中任何地方的具有该特定名称的所有文件。

要忽略整个目录及其所有内容,你需要包括目录的名称,并在最后加上斜线 /

test/

这个命令将忽略位于你的项目中任何地方的名为 test 的目录(包括目录中的其他文件和其他子目录)。

需要注意的是,如果你只写一个文件的名字或者只写目录的名字而不写斜线 /,那么这个模式将同时匹配任何带有这个名字的文件或目录:

# 匹配任何名字带有 test 的文件和目录
test

如果你想忽略任何以特定单词开头的文件或目录怎么办?

例如,你想忽略所有名称以 img 开头的文件和目录。要做到这一点,你需要指定你想忽略的名称,后面跟着 * 通配符选择器,像这样:

img*

这个命令将忽略所有名字以 img 开头的文件和目录。

但是,如果你想忽略任何以特定单词结尾的文件或目录呢?

如果你想忽略所有以特定文件扩展名结尾的文件,你需要使用 * 通配符选择器,后面跟你想忽略的文件扩展名。

例如,如果你想忽略所有以 .md 文件扩展名结尾的 markdown 文件,你可以在你的 .gitignore 文件中添加以下内容:

*.md

这个模式将匹配位于项目中任何地方的以 .md 为扩展名的任何文件。

前面,你看到了如何忽略所有以特定后缀结尾的文件。当你想做一个例外,而有一个后缀的文件你不想忽略的时候,会发生什么?

假设你在你的 .gitignore 文件中添加了以下内容:

.md

这个模式会忽略所有以 .md 结尾的文件,但你不希望 Git 忽略一个 README.md 文件。

要做到这一点,你需要使用带有感叹号的否定模式,即 !,来排除一个本来会被忽略的文件:

# 忽略所有 .md 文件
.md# 不忽略 README.md 文件
!README.md

.gitignore 文件中使用这两种模式,所有以 .md 结尾的文件都会被忽略,除了 README.md 文件。

需要记住的是,如果你忽略了整个目录,这个模式就不起作用。

例如,你忽略了所有的 test 目录:

test/

假设在一个 test 文件夹内,你有一个文件,example.md,你不想忽略它。

你不能像这样在一个被忽略的目录内排除一个文件:

# 忽略所有名字带有 test 的目录
test/# 试图在一个被忽略的目录内排除一个文件是行不通的
!test/example.md

如何忽略以前提交的文件

当你创建一个新的仓库时,最好的做法是创建一个 .gitignore 文件,包含所有你想忽略的文件和不同的文件模式–在提交之前。

Git 只能忽略尚未提交到仓库的未被追踪的文件。

如果你过去已经提交了一个文件,但希望没有提交,会发生什么?

比如你不小心提交了一个存储环境变量的 .env 文件。

你首先需要更新 .gitignore 文件以包括 .env 文件:

# 给 .gitignore 添加 .env 文件
echo ".env" >> .gitignore

现在,你需要告诉 Git 不要追踪这个文件,把它从索引中删除:

git rm --cached .env

git rm 命令,连同 --cached 选项,从版本库中删除文件,但不删除实际的文件。这意味着该文件仍然在你的本地系统和工作目录中作为一个被忽略的文件。

git status 会显示该文件已不在版本库中,而输入 ls 命令会显示该文件存在于你的本地文件系统中。

如果你想从版本库和你的本地系统中删除该文件,省略 --cached 选项。

接下来,用 git add 命令将 .gitignore 添加到暂存区:

git add .gitignore

最后,用 git commit 命令提交 .gitignore 文件:

git commit -m "update ignored files"

Reference:https://www.freecodecamp.org/chinese/news/gitignore-file-how-to-ignore-files-and-folders-in-git/

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

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

相关文章

Django框架之模型层(一)

【一】前言 Django自带的sqlite3数据对日期格式不敏感,处理的时候容易出错 【二】单表操作 【1】数据的增加 from django.test import TestCase# Create your tests here. import osif __name__ "__main__":os.environ.setdefault("DJANGO_SETTIN…

【Go入门】 Go搭建一个Web服务器

【Go入门】 Go搭建一个Web服务器 前面小节已经介绍了Web是基于http协议的一个服务,Go语言里面提供了一个完善的net/http包,通过http包可以很方便的搭建起来一个可以运行的Web服务。同时使用这个包能很简单地对Web的路由,静态文件&#xff0c…

【Go入门】并发

【Go入门】并发 有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。 goroutine goroutine是Go并行设计的核心。goroutine说到底其实就是协程,…

华为OD机试 - 转盘寿司(Java JS Python C)

目录 题目描述 输入描述 输出描述 用例 题目解析 JS算法源码 Java算法源码

【力扣】从零开始的动态规划

【力扣】从零开始的动态规划 文章目录 【力扣】从零开始的动态规划开头139. 单词拆分解题思路 45. 跳跃游戏 II解题思路 5. 最长回文子串解题思路 1143. 最长公共子序列解题思路 931. 下降路径最小和解题思路 开头 本力扣题解用5题来引出动态规划的解题步骤,用于本…

Android图片涂鸦,Kotlin(1)

Android图片涂鸦,Kotlin(1) import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.PointF import android.…

UE4动作游戏实例RPG Action解析三:实现效果,三连击Combo,射线检测,显示血条,火球术

一、三连Combo 实现武器三连击,要求: 1.下一段Combo可以随机选择, 2.在一定的时机才能再次检测输入 3. 等当前片段播放完才播放下一片段 1.1、蒙太奇设置 通过右键-新建蒙太奇片段,在蒙太奇里创建三个片段,并且移除相关连接,这样默认只会播放第一个片段 不同片段播…

图像分类(六) 全面解读复现MobileNetV1-V3

MobileNetV1 前言 MobileNetV1网络是谷歌团队在2017年提出的,专注于移动端和嵌入设备的轻量级CNN网络,相比于传统的神经网络,在准确率小幅度降低的前提下大大减少模型的参数与运算量。相比于VGG16准确率减少0.9%,但模型的参数只…

基于Vue+SpringBoot的大病保险管理系统 开源项目

项目编号: S 031 ,文末获取源码。 \color{red}{项目编号:S031,文末获取源码。} 项目编号:S031,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统配置维护2.2 系统参保管理2.3 大…

SDUT OJ《算法分析与设计》搜索算法

A - 子集和问题 Description 子集和问题的一个实例为〈S,t〉。其中,S{ x1 , x2 ,…,xn }是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得: 。 试设计一个解子…

坐标系下的运动旋量转换

坐标系下的运动旋量转换 文章目录 坐标系下的运动旋量转换前言一、运动旋量物体运动旋量空间运动旋量 二、伴随变换矩阵三、坐标系下运动旋量的转换四、力旋量五、总结参考资料 前言 对于刚体而言,其角速度可以写为 ω ^ θ ˙ \hat {\omega} \dot \theta ω^θ˙&…

Pytorch torch.exp()的使用举例

代码实验展示: Microsoft Windows [版本 10.0.18363.1256] (c) 2019 Microsoft Corporation。保留所有权利。C:\Users\chenxuqi>conda activate ssd4pytorch1_2_0(ssd4pytorch1_2_0) C:\Users\chenxuqi>python Python 3.7.7 (default, May 6 2020, 11:45:54) [MSC v.191…

无线WiFi安全渗透与攻防(N.3)WPA破解-创建Hash-table加速并用Cowpatty破解

WPA破解-创建Hash-table加速并用Cowpatty破解 WPA破解-创建Hash-table加速并用Cowpatty破解1.Cowpatty 软件介绍2.渗透流程1.安装CoWPAtty2.抓握手包1.查看网卡2.开启监听模式3.扫描wifi4.抓握手包5.进行冲突模式攻击3.STA重新连接wifi4.渗透WPA wifi5.使用大字典破解3.hash-ta…

STL总结

STL vector 头文件<vector> 初始化,定义,定义长度&#xff0c;定义长度并且赋值&#xff0c;从数组中获取数据返回元素个数size()判断是否为空empty()返回第一个元素front()返回最后一个数back()删除最后一个数pop_back()插入push_back(x)清空clear()begin()end()使用s…

SQL SERVER 2008安装教程

SQL SERVER 2008安装教程 本篇文章介绍了安装SQL Server 2008企业版的软硬件配置要求&#xff0c;安装过程的详细步骤&#xff0c;以及需要注意的事项。 安装步骤 (1). 在安装文件setup.exe上&#xff0c;单击鼠标右键选择“以管理员的身份运行”&#xff0c;如下图所示&#…

皮肤性病科专家谭巍主任提出HPV转阴后饮食七点建议

HPV转阴是每一位感染者都期盼的&#xff0c;因为转阴所以健康&#xff0c;只有转为阴性才意味着不具备传染性&#xff0c;从此也不必再害怕将病毒传染给家人的风险&#xff0c;也不必再担忧持续感染而引发的健康风险。总之&#xff0c;HPV转阴是预示感染者恢复健康与否的主要标…

《洛谷深入浅出进阶篇》P1995 程序自动分析——并查集,离散化

上链接&#xff1a;P1955 [NOI2015] 程序自动分析 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1955 上题干&#xff1a; 首先给你一个整数t&#xff0c;代表t次操作。 每一次操作包含以下内容&#xff1a; 1.给你一个整数n&#xff0c;让…

学习c#的第十八天

目录 C# 文件的输入与输出 C# I/O 类 FileStream 类 文本文件的读写 StreamReader 类 StreamWriter 类 实例 二进制文件的读写 BinaryReader 类 BinaryWriter 类 实例 Windows 文件系统的操作 DirectoryInfo 类 FileInfo 类 实例 C# 文件的输入与输出 一个 文件…

【机器学习13】生成对抗网络

1 GANs的基本思想和训练过程 生成器用于合成“假”样本&#xff0c; 判别器用于判断输入的样本是真实的还是合成的。 生成器从先验分布中采得随机信号&#xff0c;经过神经网络的变换&#xff0c; 得到模拟样本&#xff1b; 判别器既接收来自生成器的模拟样本&#xff0c; 也接…

数据结构:红黑树讲解(C++)

红黑树 1.前言2.红黑树简述2.1概念2.2性质 3.红黑树的插入3.1关于新插入节点的颜色3.2节点的定义3.3插入新节点3.4判断插入后是否需要调整3.5插入后维持红黑树结构&#xff08;重点&#xff09;3.5.1cur、p、u为红&#xff0c;g为黑3.5.2cur、p为红&#xff0c;g为黑&#xff0…