Git忽略文件.gitignore的使用

1.为什么使用?

        当你使用git add .的时候有没有遇到把你不想提交的文件也添加到了缓存中去?比如项目的本地配置信息,如果你上传到Git中去其他人pull下来的时候就会和他本地的配置有冲突,所以这样的个性化配置文件我们一般不把它推送到git服务器中,但是又为了偷懒每次添加缓存的时候都想用git add .而不是手动一个一个文件添加,该怎么办呢?很简单,git为我们提供了一个.gitignore文件只要在这个文件中申明那些文件你不希望添加到git中去,这样当你使用git add .的时候这些文件就会被自动忽略掉。

2.忽略文件的原则

  • 忽略操作系统自动生成的文件,比如缩略图等;
  • 忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
  • 忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

3.使用方法

        首先,在你的工作区新建一个名称为.gitignore的文件。然后,把要忽略的文件名填进去,Git就会自动忽略这些文件。不需要从头写.gitignore文件,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。

4.例子

        比如你的项目是java项目,.java文件编译后会生成.class文件,这些文件多数情况下是不想被传到仓库中的文件。这时候你可以直接适用github的.gitignore文件模板。https://github.com/github/gitignore/blob/master/Java.gitignore 将这些忽略文件信息复制到你的.gitignore文件中去:

*.class# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.ear# virtual machine crash logs, see [http://www.java.com/en/download/help/error_hotspot.xml](http://www.java.com/en/download/help/error_hotspot.xml)
hs_err_pid*

        可以看到github为我们提供了最流行的.gitignore文件配置。
保存.ignore文件后我们查看下git status,检查下是否还有我们不需要的文件会被添加到git中去:

$ git status
On branch masterInitial commitChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   .gitignorenew file:   HelloWorld.javaUntracked files:(use "git add <file>..." to include in what will be committed)Config.ini

        比如我的项目目录下有一个Config.ini文件,这个是个本地配置文件我不希望上传到git中去,我们可以在gitignore文件中添加这样的配置:

Config.ini

        或者你想忽略所有的.ini文件你可以这样写:

*.ini

        如果有些文件已经被你忽略了,当你使用git add时是无法添加的,比如我忽略了*.class,现在我想把HelloWorld.class添加到git中去:

$ git add HelloWorld.class
The following paths are ignored by one of your .gitignore files:
HelloWorld.class
Use -f if you really want to add them.

        git会提示我们这个文件已经被我们忽略了,需要加上-f参数才能强制添加到git中去:

$ git status
On branch masterInitial commitChanges to be committed:(use "git rm --cached <file>..." to unstage)new file:   .gitignorenew file:   HelloWorld.classnew file:   HelloWorld.java

        这样就能强制添加到缓存中去了。如果我们意外的将想要忽略的文件添加到缓存中去了,我们可以使用rm命令将其从中移除:

$ git rm HelloWorld.class --cached
rm 'HelloWorld.class'

        如果你已经把不想上传的文件上传到了git仓库,那么你必须先从远程仓库删了它,我们可以从远程仓库直接删除然后pull代码到本地仓库这些文件就会本删除,或者从本地删除这些文件并且在.gitignore文件中添加这些你想忽略的文件,然后再push到远程仓库。

5.查看gitignore规则

        如果你发下.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

$ git check-ignore -v HelloWorld.class
.gitignore:1:*.class    HelloWorld.class

        可以看到HelloWorld.class匹配到了我们的第一条*.class的忽略规则所以文件被忽略了。

6.忽略规则文件语法

a.忽略指定文件/目录

# 忽略指定文件
HelloWrold.class# 忽略指定文件夹
bin/
bin/gen/

b.通配符忽略规则

        通配符规则如下:

# 忽略.class的所有文件
*.class# 忽略名称中末尾为ignore的文件夹
*ignore/# 忽略名称中间包含ignore的文件夹
*ignore*/

7.运行效果图

         可以看到最终提交上来的是不存在 node_modules 等已被忽略的文件的。

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

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

相关文章

数据库 并发控制

多用户数据库系统&#xff1a;允许多个用户同时使用同一个数据库的数据库系统 交叉并发方式&#xff1a;在单处理机系统中&#xff0c;事务的并行执行实际上是这些并行事务的并行操作轮流交叉运行 同时并发方式&#xff1a;在多处理机系统中&#xff0c;每个处理机可以运行一个…

Java设计模式-结构型模式-代理模式

代理模式 代理模式静态代理动态代理JDK动态代理CGlib动态代理 代理模式 创建一个代理对象来控制对原始对象的访问&#xff0c;可以用来扩展原始对象的功能&#xff0c;同时保护原始对象 一般使用代理模式的目的有两个&#xff1a; 保护目标对象增强目标对象 代理模式有两种实现…

【OpenCV实现图像:用OpenCV图像处理技巧之巧用直方图】

文章目录 概要前置条件统计数据分析直方图均衡化原理小结 概要 图像处理是计算机视觉领域中的重要组成部分&#xff0c;而直方图在图像处理中扮演着关键的角色。如何巧妙地运用OpenCV库中的图像处理技巧&#xff0c;特别是直方图相关的方法&#xff0c;来提高图像质量、改善细…

ubantu libssl.so.1.1: cannot open shared object file

libssl.so.1.1: cannot open shared object file 使用 Ubuntu 22.04 时&#xff0c;有时候会遇到如下错误 error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory 这是因为Ubuntu 22.04 默认使用的是 openssl3.0 …

stm32超声波测距不准的解决方法(STM32 delay_us()产生1us)及stm32智能小车超声波测距代码(C语言版本)

首先要说明一下原理&#xff1a;使用stm32无法准确产生1us的时间&#xff0c;但是超声波测距一定要依赖时间&#xff0c;时间不准&#xff0c;距离一定不准&#xff0c;这是要肯定的&#xff0c;但是在不准确的情况下&#xff0c;要测量一个比较准确的时间&#xff0c;那么只能…

MySQL数据库——存储过程-循环(while、repeat、loop)

目录 while 介绍 案例 repeat 介绍 案例 loop 介绍 案例一 案例二 while 介绍 while 循环是有条件的循环控制语句。满足条件后&#xff0c;再执行循环体中的SQL语句。具体语法为&#xff1a; -- 先判定条件&#xff0c;如果条件为true&#xff0c;则执行逻辑&#…

同一个Unity项目打开两个Unity Editor实例

特殊情况下&#xff0c;同一个项目需要同时打开两个编辑器做测试&#xff0c;如多人在线游戏&#xff0c;或者有通信功能的时候就有这样的需求。同时也为了方便调试和观察日志。并且修改的是同一份代码。 命令介绍&#xff1a; 实现思路&#xff1a; 使用 mklink 命令 分别创建…

C++与多态

多态的本质是允许对象以其实际类型的行为方式来操作&#xff0c;而不仅仅是其静态类型所声明的方式。 多态是面向对象编程中的一种核心概念&#xff0c;它允许对象根据其具体类型执行相应的操作&#xff0c;而不是其声明的类型。我们可以使用一个经典的动物的例子来说明这一点。…

【nlp】1.2文本张量表示方法(词向量word2seq和词嵌入Word Embedding)

文本张量的表示方法 1 one-hot词向量表示1.1 实操演示1.2 one-hot编码使用1.3 one-hot编码的优劣势2 word2vec模型2.1 模型介绍2.2 word2dev的训练和使用2.2.1 数据集的下载与预处理2.2.2 词向量的训练2.2.3 查询单词对应的词向量2.2.4 模型效果检验2.2.5 网络超参数设定3 词嵌…

使用 huggingface_hub 镜像下载 大模型

download.py &#x1f447; import os # 配置 hf镜像 os.environ[HF_ENDPOINT] https://hf-mirror.com# 设置保存的路径 local_dir "XXXXXX"# 设置仓库id model_id "sensenova/piccolo-large-zh"cmd f"huggingface-cli download --resume-downlo…

【MySQL】库的相关操作 + 库的备份和还原

库的操作 前言正式开始创建数据库删除数据库编码集查看系统默认字符集以及校验规则字符集校验规则 所有支持的字符集和校验规则所有字符集所有校验规则 指明字符集和校验规则创建数据库相同的字符集用不同的校验规则读取会出现什么情况 alter修改数据库show create databasealt…

瑞萨e2studio(29)----SPI速率解析

瑞萨e2studio.29--SPI速率解析 概述视频教学时钟配置解析RA4M2的BRR值时钟速率7.5M下寄存器值3K下寄存器值 概述 在嵌入式系统的设计中&#xff0c;串行外设接口&#xff08;SPI&#xff09;的通信速率是一个关键参数&#xff0c;它直接影响到系统的性能和稳定性。瑞萨电子的…

C# Onnx LSTR 基于Transformer的端到端实时车道线检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 lstr_360x640.onnx Inputs ------------------------- name&#xff1a;input_rgb tensor&#xff1a;Float[1, 3, 360, 640] name&#xff1a;input_mask tensor&#xff1a;Float[1, 1, 360, 640] -----------------…

适配器模式 rust和java的实现

文章目录 适配器模式介绍何时使用应用实例优点缺点使用场景 实现java实现rust 实现 rust代码仓库 适配器模式 适配器模式&#xff08;Adapter Pattern&#xff09;是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式&#xff0c;它结合了两个独立接口的功能…

【每日一题】区域和检索 - 数组可修改

文章目录 Tag题目来源解题思路方法一&#xff1a;分块方法二&#xff1a;线段树方法三&#xff1a;树状数组 写在最后 Tag 【树状数组】【线段树】【分块】【前缀和】【设计类】【2023-11-13】 题目来源 307. 区域和检索 - 数组可修改 解题思路 使用前缀和解决不行吗&#x…

XSS 漏洞的理解

谈一谈你对XSS 漏洞的理解 1.漏洞描述 跨站脚本攻击是一种Web安全漏洞。攻击者利用该漏洞&#xff0c;在网页中注入恶意代码&#xff0c;等待受害者访问被注入恶意代码的网页。网页中的恶意代码会被浏览器识别&#xff0c;并执行。恶意代码通常是Javascript脚本&#xff0c;由…

编码心路:程序员笑对挫折的瞬间

目录 前言拼写的魔咒小时级的逻辑错误注释的诡异魔力复制粘贴的陷阱版本控制的战争收获与体会结语 前言 编写和维护代码是一项充满挑战和乐趣的工作。程序员们在这个数字世界中创造、改进&#xff0c;但有时也会遇到一些令人哭笑不得的瞬间。这篇文章将通过一系列轻松幽默的故…

centos利用find提权反弹shell

需要说明的是利用find命令进行提权的方式已经不存在了&#xff0c;因为Linux默认不会为find命令授予suid权限&#xff0c;这里只是刻意的制造出了一种存在提权的环境 首先我们先介绍一下find命令&#xff0c;find命令主要用来在Linux中查找文件使用&#xff0c;它可以进行最基础…

Brute Force

Brute Force "Brute Force"&#xff08;暴力破解&#xff09;指的是一种通过尝试所有可能的组合来获取访问、解密或破解信息的攻击方法。这种攻击方法通常是基于暴力和不断尝试的&#xff0c;不依赖漏洞或弱点。通常用于破解密码、破坏系统或获取未经授权的访问权限…

数据分析实战 | 逻辑回归——病例自动诊断分析

目录 一、数据及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 一、数据及分析对象 CSV文件——“bc_data.csv” 数据集链接&#xff1a;https://download.csdn.net/d…