.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/
相关文章:
.gitignore 文件——如何在 Git 中忽略文件和文件夹详细教程
文章目录 什么是 .gitignore 文件?.gitignore 文件是用来做什么的?如何创建一个 .gitignore 文件?在 .gitignore 文件中应包括什么?如何在 Git 中忽略一个文件和文件夹如何忽略以前提交的文件 什么是 .gitignore 文件?…...

【数据结构(二)】单链表(3)
文章目录 1. 链表介绍2. 单链表应用实例2.1. 顺序添加方式2.1.1. 思路分析2.1.2. 代码实现 2.2. 按照编号顺序添加方式2.2.1. 思路分析2.2.2. 代码实现 3. 单链表节点的修改3.1. 思路分析3.2. 代码实现 4. 单链表节点的删除4.1. 思路分析4.2. 代码实现 5. 单链表常见面试题5.1.…...

创新案例|云服务平台HashiCorp是如何构建开源社区实现B2B增长飞轮
社区文化是HashiCorp企业文化的重要组成部分。虽然众多公司声称自己是社区驱动,但实际付诸行动的很少。与众不同的是,HashiCorp从一开始就将社区视为战略方针的核心,这也影响和塑造了公司今天的发展方向。社区不仅是执行策略之一,…...

2024年软件测试面试必看系列,看完去面试你会感谢我的!!
朋友圈点赞的测试用例 功能测试 1点赞后是否显示结果 2.点赞后是否可以取消; 3.点赞取消后是否可以重复点赞; 4.共同好友点赞后,是否有消息提醒; 5.非共同好友点赞后,是否有消息提醒; 6.点击点赞人昵称,是否可以跳转到他/她的主页; 7.自己能…...

01ctfer 文件上传
01ctfer 文件上传 启动靶场 访问该地址 代码审计 <?php header("Content-Type:text/html; charsetutf-8"); // 每5分钟会清除一次目录下上传的文件 require_once(pclzip.lib.php);if(!$_FILES){echo <!DOCTYPE html> <html lang"zh">…...

2.2 调用星火大模型的API
调用星火大模型的API 1 申请API调用权限:2 调用原生星火 API3 统一API调用方式 项目仓库地址:https://github.com/datawhalechina/llm-universe 讯飞星火认知大模型,由科大讯飞于2023年5月推出的中文大模型,也是国内大模型的代表…...
云原生是整个信息化行业的未来,一文彻底搞懂云原生
云原生这个词来自英语的Cloud Native的翻译,云原生是已经存多年在术语,真正开始获得关注的是在2015年到2016年。 这归因于这几年逐渐发布的Docker的兴起。 会有越来越多的企业和组织开始关注到它,并把他们的工作负载运行在云端的益处。无论是…...
【Redis】RedisTemplate最全的常用方法
文章目录 前言1.RedisTemplate常用方法2.String类型3.Hash类型4.List类型5.Set类型6.zSet类型 前言 RedisTemplate常用方法String类型Hash类型List类型Set类型zSet类型 Redis常用的数据类型:String、Hash、List、Set、zSet 1.RedisTemplate常用方法 redisTempla…...

图像倾斜角度求取-Radon变换
Radon算法 Radon(拉东)算法是一种通过定方向投影叠加,找到最大投影值时角度,从而确定图像倾斜角度的算法。具体过程如图所示 图1 Radon变换算法 Radon计算示例 对于纹理方向明显的图像,如图2所示,可以通…...

如何在本地搭建Oracle数据库实现公网环境下通过PLSQL工具进行远程访问
文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 前言 Oracle,是甲骨文公司的一款关系…...

时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)
时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM) 目录 时序预测 | Python实现ConvLSTM卷积长短期记忆神经网络股票价格预测(Conv1D-LSTM)预测效果基本介绍程序设计参考资料预测效果 基本介绍 时序预测 | Python实现ConvLSTM卷积长短期记忆神…...

qtpdfium的编译及读取pdf文件和一些简单操作
qtpdfium是谷歌的一款开源项目,它的内核是基于国内的福昕pdf,许可协议为 BSD 3-Clause,允许用于闭源商业行为 下载 我们可以从git上进行下载,github,如果嫌下载速度慢,可以从csdn进行下载csdn 下载完成之…...
ClickHouse查看执行计划
在clickhouse 20.6版本之前要查看SQL语句的执行计划需要设置日志级别为trace才能可以看到,并且只能真正执行sql,在执行日志里面查看。在20.6版本引入了原生的执行计划的语法。在20.6.3版本成为正式版本的功能。 本文档基于目前较新稳定版21.7.3.14。 1.基…...

2023-11-17 VsCode使用makefile进行多文件编译
点击 <C 语言编程核心突破> 快速C语言入门 VsCode使用makefile进行多文件编译 前言一、一个简单的多文件示例二、makefile基本语法三、VsCode使用makefile总结 前言 要解决问题: C或C可以多文件编译, 意味着需要进行代码组织, 为了方便多文件编译, gnu开发了make工具, …...

Network(四)NAT实现方式与VRRP概述
一 NAT 1 NAT概述 (1)NAT的作用 Network Address Translation,网络地址转换 通过将内部网络的私有IP地址转换成全球唯一的公网IP地址使内部网络可以连接到互联网。 (2)私有IP地址分类 A类10.0.0.0~10.255.255.…...
C#_键盘钩子
一、class class KeyboardHook{public event KeyEventHandler KeyDownEvent;public event KeyPressEventHandler KeyPressEvent;public event KeyEventHandler KeyUpEvent;public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam);static int hKeyboardHook 0;…...

YOLO免费数据集网站收集
目录 Roboflow Universe: Open Source Computer Vision Community Find Open Datasets and Machine Learning Projects | Kaggle 编辑 【火焰和烟雾图像数据集】-计算机视觉数据集-极市开发者平台 (cvmart.net) 开放数据集- 飞桨AI Studio星河社区 - 人工智能学习与实训社…...

拼图小游戏
package li;import ui.tu; //启动类 public class 主 {public static void main(String[] args) {new tu(); //创建登陆界面} }package ui;import javax.swing.*; import javax.swing.border.BevelBorder; import java.awt.event.ActionEvent; import java.awt.event.ActionLi…...

卷积神经网络(CNN)天气识别
文章目录 前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)我的环境: 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…...

Linux进程间通信之匿名管道
文章目录 为什么要有进程间通信pipe函数共享管道原理管道特点管道的四种情况 管道的应用场景(进程池)ProcessPool.ccTask.hpp 为什么要有进程间通信 数据传输:一个进程需要将它的数据发送给另一个进程 资源共享:多个进程之间共享…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...