Git忽略文件的几种方法,以及.gitignore文件的忽略规则
目录
- .gitignore文件
- Git忽略规则以及优先级
- .gitignore文件忽略规则
- 常用匹配示例:
- 有三种方法可以实现忽略Git中不想提交的文件。
- 1、在Git项目中定义 .gitignore 文件(优先级最高,推荐!)
- 2、在Git项目的设置中指定排除文件
- 3、定义Git全局的 .gitignore 文件(个人使用方便,但是团队的话不适用,因为是在自己电脑设置的全局)
- 如何检查自己写的ignore规则是否有效?
- gitignore规则不生效
.gitignore文件
在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。
注意:如果你创建.gitignore文件之前就push了某一文件,那么即使你在.gitignore文件中写入过滤该文件的规则,该规则也不会起作用,git仍然会对该文件进行版本管理。
Git忽略规则以及优先级
详细的忽略规则可以参考官方英文文档。
在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
- 从命令行中读取可用的忽略规则
- 当前目录定义的规则
- 父级目录定义的规则,依次递推,目录结构较高的.gitignore文件被较近的.gitignore文件中相同的配置所覆盖
- .git/info/exclude文件中定义的规则
- core.excludesfile中定义的全局规则
.gitignore文件忽略规则
- 空格不匹配任意文件,可作为分隔符,方便阅读。
#
用于注释,\
表示转义(如需使用实体\
,则要加引号"\"
)。*
可以匹配任何字符(0或多个)。?
可以匹配单个字符。(不可以匹配/)/
用于分隔目录:- 当
/
在开头时,表示从.gitignore文件所在的根目录开始匹配。 - 当
/
在末尾时,只匹配目录及该目录下面的全部内容,否则同名的目录和文件都将匹配。
- 当
!
开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用!
也不会再次被包含。[]
通常用于匹配一个字符列表,如:a[mn]z可匹配amz和anz。**
用于匹配多级目录,如a/**/b可匹配a/b
,a/x/b
,a/x/y/b
。
注意:git 对于 .gitignore配置文件是按行从上到下进行规则匹配的。
常用匹配示例:
#
: 表示此为注释,将被Git忽略。*
:表示忽略所有。*/
:表示忽略所有目录。1.txt
: 忽略任意目录(当前目录即根目录及其子文件夹)下的1.txt
的文件夹或同名文件,例如1.txt,/pojo/1.txt,/pojo/a/1.txt,若是文件夹则该文件夹下的所有内容都会被忽略。*.txt
: 忽略任意目录(当前目录即根目录及其子文件夹)下的所有以.txt
结尾的文件夹或文件,若是文件夹则该文件夹下的所有内容都会被忽略。/1.txt
:忽略根路径下的1.txt
的文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略。/*.txt
: 忽略根路径下的所有以.txt
结尾的文件夹或文件,若是文件夹则该文件夹下的所有内容都会被忽略,不忽略 /pojo/1.txt。pojo
:忽略任意目录(当前目录即根目录及其子文件夹)下的pojo
文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略。/pojo
: 忽略根目录下的pojo
文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略。pojo/
: 忽略目录pojo
下的全部内容;注意,不管是根目录下的/pojo/
目录,还是某个目录下的/child/pojo/
,以及pojo
文件夹里面的全部内容都会被忽略,同时忽略pojo
文件夹,以pojo
命名的文件不会忽略。pojo/*
:忽略当前路径下pojo
文件夹下的全部内容,pojo
文件夹不忽略。/pojo/
: 忽略根目录下的pojo
文件夹,该文件夹下的所有内容都会被忽略,以pojo
命名的文件不会忽略。pojo/1.txt
:忽略当前路径下的pojo
下的1.txt
的文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略,不忽略pojo
文件夹。/pojo/1.txt
:忽略根目录下的pojo
文件下的1.txt
的文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略,不忽略pojo
文件夹。pojo/*.txt
: 忽略当前路径下的pojo
文件夹下所有以.txt
结尾的文件夹或文件,若是文件夹则该文件夹下的所有内容都会被忽略,不忽略pojo/common/1.txt
,不忽略/a/pojo/1.txt
,不忽略pojo
文件夹。pojo/1.txt/*
:忽略当前路径下的pojo
文件夹下的1.txt
文件夹中的所有文件,1.txt
文件夹不忽略。**/pojo
: 忽略任意目录下的pojo
文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略。/pojo
,/pojo/1.txt
,/a/pojo
,/a/pojo/1.txt
,a/b/pojo
等。a/**/b
: 忽略当前路径下的以a
文件夹为开始,中间可以有0
个或任意
个目录的b
文件夹或同名文件,若是文件夹则该文件夹下的所有内容都会被忽略,a/b
,a/x/b
,a/x/y/b
,a/x/y/b/1.txt
等。/pojo/*
和!/pojo/1.txt
: 忽略pojo
目录下的所有文件但不忽略pojo
目录下的1.txt
文件,pojo
文件夹不忽略。
注意上面的/pojo/*
不能写为/pojo/
,否则父目录被前面的规则排除掉了,1.txt
文件虽然加了!过滤规则,也不会生效!
有三种方法可以实现忽略Git中不想提交的文件。
1、在Git项目中定义 .gitignore 文件(优先级最高,推荐!)
这种方式通过在项目的某个文件夹下定义 .gitignore 文件,在该文件中定义相应的忽略规则,来管理当前文件夹及其子文件夹下的文件的Git提交行为。
.gitignore 文件是可以提交到公有仓库中,这就为该项目下的所有开发者都共享一套定义好的忽略规则。
在 .gitingore 文件中,遵循相应的语法,在每一行指定一个忽略规则。如:
样例一:
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
mvnw
mvnw.cmd
.mvn### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/### VS Code ###
.vscode/
样例二:
######################
# Project Specific
######################
/target/www/**
/src/test/javascript/coverage/
/src/test/javascript/PhantomJS*/######################
# Node
######################
/node/
node_tmp/
node_modules/
npm-debug.log.*######################
# SASS
######################
.sass-cache/######################
# Eclipse
######################
*.pydevproject
.project
.metadata
tmp/
tmp/**/*
*.tmp
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath
.factorypath
/src/main/resources/rebel.xml# External tool builders
.externalToolBuilders/**# Locally stored "Eclipse launch configurations"
*.launch# CDT-specific
.cproject# PDT-specific
.buildpath######################
# Intellij
######################
HELP.md
.idea
*.iws
*.iml
*.ipr
mvnw
mvnw.cmd
.mvn
*.ids
*.orig
classes/######################
# Visual Studio Code
######################
.vscode/######################
# Maven
######################
/log/
target/######################
# Gradle
######################
.gradle/
/build/######################
# Package Files
######################
*.jar
*.war
*.ear
*.db######################
# Windows
######################
# Windows image file caches
Thumbs.db# Folder config file
Desktop.ini######################
# Mac OSX
######################
.DS_Store
.svn# Thumbnails
._*# Files that might appear on external disk
.Spotlight-V100
.Trashes######################
# Logs
######################
*.log######################
# Others
######################
*.class
*.*~
*~
.merge_file*######################
# Gradle Wrapper
######################
!gradle/wrapper/gradle-wrapper.jar######################
# Maven Wrapper
######################
!.mvn/wrapper/maven-wrapper.jar######################
# ESLint
######################
.eslintcache
/.apt_generated/server/package-lock.json
server/mochawesome-report/
2、在Git项目的设置中指定排除文件
这种方式只是临时指定该项目的行为,需要编辑当前项目下的 .git/info/exclude 文件,然后将需要忽略提交的文件写入其中。
需要注意的是,这种方式指定的忽略文件的根目录是项目根目录。
3、定义Git全局的 .gitignore 文件(个人使用方便,但是团队的话不适用,因为是在自己电脑设置的全局)
除了可以在项目中定义 .gitignore 文件外,还可以设置全局的 git .ignore 文件来管理所有Git项目的行为。这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。
1) 创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore).
这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用
户家目录下
git.ignore 文件模版内容如下:
# Compiled class file
*.class
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see
http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
.classpath
.project
.settings
target
.idea
*.iml
2) 在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)我的是在C:\Users\PC.gitconfig
[user]email = xuxin@wondertek.com.cnname = xuxin666
[credential "https://gitee.com"]provider = generic
[core]excludesfile = C:/Users/PC/git.ignore
注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”
如何检查自己写的ignore规则是否有效?
git check-ignore -v {文件或目录路径}
gitignore规则不生效
.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先修改.gitignore文件,之后在执行以下内容先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
同样的,已被.gitignore忽略的文件是无法加入版本库的。
解决方法:要纳入版本管理,先移除规则。
相关文章:
Git忽略文件的几种方法,以及.gitignore文件的忽略规则
目录 .gitignore文件Git忽略规则以及优先级.gitignore文件忽略规则常用匹配示例: 有三种方法可以实现忽略Git中不想提交的文件。1、在Git项目中定义 .gitignore 文件(优先级最高,推荐!)2、在Git项目的设置中指定排除文…...
C语言——指针进阶(2)
继续上次的指针,想起来还有指针的内容还没有更新完,今天来补上之前的内容,上次我们讲了函数指针,并且使用它来实现一些功能,今天我们就讲一讲函数指针数组等内容,废话不多说,我们开始今天的学习…...
【汇编中的寄存器分类与不同寄存器的用途】
汇编中的寄存器分类与不同寄存器的用途 寄存器分类 在计算机体系结构中,8086CPU,寄存器可以分为以下几类: 1. 通用寄存器: 通用寄存器是用于存储数据和执行算术运算的寄存器。在 x86 架构中,这些通用寄存器通常包括…...
基于文本提示的图像目标检测与分割实践
近年来,计算机视觉取得了显着的进步,特别是在图像分割和目标检测任务方面。 最近值得注意的突破之一是分段任意模型(SAM),这是一种多功能深度学习模型,旨在有效地从图像和输入提示中预测对象掩模。 通过利用…...
【4-5章】Spark编程基础(Python版)
课程资源:(林子雨)Spark编程基础(Python版)_哔哩哔哩_bilibili 第4章 RDD编程(21节) Spark生态系统: Spark Core:底层核心(RDD编程是针对这个)Spark SQL:…...
04 卷积神经网络搭建
一、数据集 MNIST数据集是从NIST的两个手写数字数据集:Special Database 3 和Special Database 1中分别取出部分图像,并经过一些图像处理后得到的[参考]。 MNIST数据集共有70000张图像,其中训练集60000张,测试集10000张。所有图…...
【hadoop运维】running beyond physical memory limits:正确配置yarn中的mapreduce内存
文章目录 一. 问题描述二. 问题分析与解决1. container内存监控1.1. 虚拟内存判断1.2. 物理内存判断 2. 正确配置mapReduce内存2.1. 配置map和reduce进程的物理内存:2.2. Map 和Reduce 进程的JVM 堆大小 3. 小结 一. 问题描述 在hadoop3.0.3集群上执行hive3.1.2的任…...
数据结构--6.5二叉排序树(插入,查找和删除)
目录 一、创建 二、插入 三、删除 二叉排序树(Binary Sort Tree)又称为二叉查找树,它或者是一棵空树,或者是具有下列性质的二叉树: ——若它的左子树不为空,则左子树上所有结点的值均小于它的根结构的值…...
无需公网IP,在家SSH远程连接公司内网服务器「cpolar内网穿透」
文章目录 1. Linux CentOS安装cpolar2. 创建TCP隧道3. 随机地址公网远程连接4. 固定TCP地址5. 使用固定公网TCP地址SSH远程 本次教程我们来实现如何在外公网环境下,SSH远程连接家里/公司的Linux CentOS服务器,无需公网IP,也不需要设置路由器。…...
Java工具类
一、org.apache.commons.io.IOUtils closeQuietly() toString() copy() toByteArray() write() toInputStream() readLines() copyLarge() lineIterator() readFully() 二、org.apache.commons.io.FileUtils deleteDirectory() readFileToString() de…...
makefile之使用函数wildcard和patsubst
Makefile之调用函数 调用makefile机制实现的一些函数 $(function arguments) : function是函数名,arguments是该函数的参数 参数和函数名用空格或Tab分隔,如果有多个参数,之间用逗号隔开. wildcard函数:让通配符在makefile文件中使用有效果 $(wildcard pattern) 输入只有一个参…...
算法通关村第十八关——排列问题
LeetCode46.给定一个没有重复数字的序列,返回其所有可能的全排列。例如: 输入:[1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 元素1在[1,2]中已经使…...
基于STM32设计的生理监测装置
一、项目功能要求 设计并制作一个生理监测装置,能够实时监测人体的心电图、呼吸和温度,并在LCD液晶显示屏上显示相关数据。 随着现代生活节奏的加快和环境的变化,人们对身体健康的关注程度越来越高。为了及时掌握自身的生理状况,…...
Go-Python-Java-C-LeetCode高分解法-第五周合集
前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接:LeetCode-Go-Python-Java-C Go-Python-Java-C-LeetCode高分解法-第一周合集 Go-Python-Java-C-LeetCode高分解法-第二周合集 Go-Python-Java-C-LeetCode高分解法-第三周合集 G…...
【前端知识】前端加密算法(base64、md5、sha1、escape/unescape、AES/DES)
前端加密算法 一、base64加解密算法 简介:Base64算法使用64个字符(A-Z、a-z、0-9、、/)来表示二进制数据的64种可能性,将每3个字节的数据编码为4个可打印字符。如果字节数不是3的倍数,将会进行填充。 优点࿱…...
leetcode 925. 长按键入
2023.9.7 我的基本思路是两数组字符逐一对比,遇到不同的字符,判断一下typed与上一字符是否相同,不相同返回false,相同则继续对比。 最后要分别判断name和typed分别先遍历完时的情况。直接看代码: class Solution { p…...
[CMake教程] 循环
目录 一、foreach()二、while()三、break() 与 continue() 作为一个编程语言,CMake也少不了循环流程控制,他提供两种循环foreach() 和 while()。 一、foreach() 基本语法: foreach(<loop_var> <items>)<commands> endfo…...
Mojo安装使用初体验
一个声称比python块68000倍的语言 蹭个热度,安装试试 系统配置要求: 不支持Windows系统 配置要求: 系统:Ubuntu 20.04/22.04 LTSCPU:x86-64 CPU (with SSE4.2 or newer)内存:8 GiB memoryPython 3.8 - 3.10g or cla…...
艺术与AI:科技与艺术的完美融合
文章目录 艺术创作的新工具生成艺术艺术与数据 AI与互动艺术虚拟现实(VR)与增强现实(AR)机器学习与互动性 艺术与AI的伦理问题结语 🎉欢迎来到AIGC人工智能专栏~艺术与AI:科技与艺术的完美融合 ☆* o(≧▽≦…...
Android常用的工具“小插件”——Widget机制
Widget俗称“小插件”,是Android系统中一个很常用的工具。比如我们可以在Launcher中添加一个音乐播放器的Widget。 在Launcher上可以添加插件,那么是不是说只有Launcher才具备这个功能呢? Android系统并没有具体规定谁才能充当“Widget容器…...
探索在云原生环境中构建的大数据驱动的智能应用程序的成功案例,并分析它们的关键要素。
文章目录 1. Netflix - 个性化推荐引擎2. Uber - 实时数据分析和决策支持3. Airbnb - 价格预测和优化5. Google - 自然语言处理和搜索优化 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专…...
jupyter 添加中文选项
文章目录 jupyter 添加中文选项1. 下载中文包2. 选择中文重新加载一下,页面就变成中文了 jupyter 添加中文选项 1. 下载中文包 pip install jupyterlab-language-pack-zh-CN2. 选择中文 重新加载一下,页面就变成中文了 这才是设置中文的正解ÿ…...
系列十、Java操作RocketMQ之批量消息
一、概述 RocketMQ可以一次性发送一组消息,那么这一组消息会被当做一个消息进行消费。 二、案例代码 2.1、pom 同系列五 2.2、RocketMQConstant 同系列五 2.3、BatchConsumer package org.star.batch.consumer;import cn.hutool.core.util.StrUtil; import lom…...
leetcode1两数之和
题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你…...
近年GDC服务器分享合集(四): 《火箭联盟》:为免费游玩而进行的扩展
如今,网络游戏采用免费游玩(Free to Play)加内购的比例要远大于买断制,这是因为前者能带来更低的用户门槛。甚至有游戏为了获取更多的用户,选择把原来的买断制改为免费游玩,一个典型的例子就是最近的网易的…...
android反射详解
1,反射的定义 一般情况下,我们使用某个类时必定知道它是什么类,是用来做什么的,并且能够获得此类的引用。于是我们直接对这个类进行实例化,之后使用这个类对象进行操作。 反射则是一开始并不知道我要初始化的类对象是…...
Python 反射和动态执行
反射主要应用于类的对象上,在运行时,将对象中的属性和方法反射出来,通过字符串对对象成员(属性、方法)进行查找、获取、删除、添加成员等动作,是一种基于字符串的事件驱动技术。 python是一门动态语言&…...
计算机网络常见端口号
端口号标识了一个主机上进行通信的不同的应用程序。比如网站服务器80端口一般都是开启的,等你来连接。 端口划分: (1)常用端口,公共端口(保留给公共服务所使用),端口号为0-1023之间…...
SpringBoot / Vue 对SSE的基本使用(简单上手)
一、SSE是什么? SSE技术是基于单工通信模式,只是单纯的客户端向服务端发送请求,服务端不会主动发送给客户端。服务端采取的策略是抓住这个请求不放,等数据更新的时候才返回给客户端,当客户端接收到消息后,…...
Qt串口基本设置与协议收发
前言 1.一直都想要做一个Qt上位机,趁着这个周末有时间,动手写一下 2.comboBox没有点击的信号,所以做了一个触发的功能 3.Qt的数据类型很奇怪,转来转去的我也搞得很迷糊 4.给自己挖个坑,下一期做一个查看波形的上位…...
小型网站建设实训教程/百度seo sem
首先到sun下载最新的jmf,然后安装。http://java.sun.com/products/java-media/jmf/index.jsp 然后,说一下需求 1. 用摄像头拍照 2. 在文本框输入文件名 3. 按下拍照按钮,获取摄像头内的图像…...
上海平台网站建设企业/惠州seo怎么做
一、需求Mac自带的JDK一般为1.6,安装IDE时会提示版过旧,从而需要替换成更高的版本;安装 Gradle;在 Eclipse 上导入并构建 Gradle 项目;二、配置 JAVA_HOME由于在添加 Gradle 环境变量时,发现 JAVA_HOME 的路…...
长沙关键词优化费用/谷歌seo搜索引擎下载
键盘制造商Korg 宣布推出一个可用于iPad上的MiDI键microKEY25。microKEY25是一个拥有25个按键的音乐键盘,可以支持iPad上的大部分音乐应用,拥有8音度调节功能以及琶音和延音功能。你还可以通过Korg KONTROL Editor这套软件对这个键盘做更多的自定义设置。…...
网站建设与网页设计入门/如何快速被百度收录
复制代码 代码如下://date:2011-08-05class RunTime//页面执行时间类{private $starttime;//页面开始执行时间private $stoptime;//页面结束执行时间private $spendtime;//页面执行花费时间function getmicrotime()//获取返回当前微秒数的浮点数{list($usec,$sec)explode("…...
网站如何做收款二维码/友链对网站seo有帮助吗
启动靶场访问如下,输入1,报错,可知是字符型注入,变量由单引号包裹 输入1 and 11 --,显示正常 先直接用sqlmap注入一下,显示存在注入,但是始终注入不出来数据库,“[ERROR] unable to …...
做网站大概花多少钱/淘宝指数官网
//获取车系APIglobal $_W,$_GPC;$carbrand$_GPC[carinput];//建立APIheader("Content-Type:text/html;charsetUTF-8");date_default_timezone_set("PRC");$showapi_appid *****; //替换此值,在官网的"我的应用"中找到相关值$showapi_secret **…...