Git忽略文件的几种方法,以及.gitignore文件的忽略规则

news2024/11/16 8:56:39

Git忽略文件的几种方法,以及.gitignore文件的忽略规则

    • .gitignore文件
      • 定义Git全局的.gitignore文件
      • Git 忽略规则
      • Git忽略规则的优先级
      • .gitignore文件忽略规则
        • 常用匹配示例:
      • 关于.gitignore规则不生效的问题
    • 不忽略没有后缀名的文件
      • 搜索电脑里没有后缀的文件
      • 不忽略无后缀名
    • 忽略某个已经托管给git的文件,防止二次提交
    • 参考链接

.gitignore文件

在使用Git的过程中,我们喜欢有的文件比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。

规则作用示例:

  • /mtk:过滤整个文件夹;
  • *.zip:过滤所有.zip文件;
  • /mtk/do.c:过滤某个具体文件;
  • !/mtk/one.txt:追踪(不过滤)某个具体文件。

注意:如果你创建.gitignore文件之前就push了某一文件,那么即使你在.gitignore文件中写入过滤该文件的规则,该规则也不会起作用,git仍然会对该文件进行版本管理

配置语法:

  • 以斜杠“/”开头表示目录;
  • 以星号“*”通配多个字符;
  • 以问号“?”通配单个字符;
  • 以方括号“[]”包含单个字符的匹配列表;
  • 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录。

注意:git 对于 .gitignore配置文件是按行从上到下进行规则匹配的

定义Git全局的.gitignore文件

除了可以在项目中定义**.gitignore文件外,还可以设置全局的git .gitignore文件**来管理所有Git项目的行为。这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。
这种方式也需要创建相应的.gitignore文件,可以放在C:/Users/用户名/目录下。然后在使用以下命令配置Git:

git config --global core.excludesfile ~/.gitignore

自用的全局 .gitingore 文件:

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
modules.xml

target/

**/.idea
**/*.iws
**/*.iml
**/*.ipr
**/modules.xml
**/mvnw
**/mvnw.cmd
**/.mvn
**/target/
**/.gitignore

### Maven ###
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar

### Java ###
# Compiled class file
*.class

Git 忽略规则

详细的忽略规则可以参考官方英文文档。

Git忽略规则的优先级

在.gitingore文件中,每一行指定一个忽略规则,Git检查忽略规则的时候有多个来源,它的优先级如下(由高到低):

  1. 从命令行中读取可用的忽略规则;
  2. 当前目录定义的规则;
  3. 父级目录定义的规则,依次递推;
  4. $GIT_DIR/info/exclude 文件中定义的规则;
  5. core.excludesfile中定义的全局规则。

.gitignore文件忽略规则

  1. 开头的/并不是标识文件夹的要表明仅忽略文件夹需要在名称后面添加 /,而不是前面。
  2. 要想忽略某文件夹,但其下部分文件不能忽略。则需要添加通配符*,然后在后面添加!开头的规则,来指出不忽略的文件或文件夹。
  3. 只要写了路径,即/左右两边都有字符,那么就是指的“绝对路径”(相对仓库的,仓库.git文件夹所在目录为根目录),但可以用*来指定层级,指定第几层子目录下的某个文件夹。
  4. 空格不匹配任意文件,可作为分隔符,可用反斜杠转义。
  5. #开头的模式标识注释,可以使用反斜杠进行转义。
  6. !开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义。
  7. /结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件。
  8. /开始的模式匹配项目跟目录。
    如果一个模式不包含斜杠,则它匹配相对于当前.gitignore文件路径的内容,如果该模式不在.gitignore文件中,则相对于项目根目录。
  9. **匹配多级目录,可在开始,中间,结束。
  10. ?通用匹配单个字符。
  11. []通用匹配单个字符列表。

常用匹配示例:

  1. bin/:忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略bin文件;
  2. /bin:忽略根目录下的bin文件;
  3. /*.c:忽略cat.c,不忽略build/cat.c;
  4. debug/*.obj:忽略debug/io.obj,不忽略debug/common/io.obj和tools/debug/io.obj;
  5. **/foo:忽略/foo, a/foo, a/b/foo等;
  6. a/**/b:忽略a/b, a/x/b, a/x/y/b等;
  7. !/bin/run.sh:不忽略bin目录下的run.sh文件;
  8. *.log:忽略所有.log文件;
  9. config.php:忽略当前路径的config.php文件。

.gitignore文件的最开头的一些通用设置:

# 忽略掉所有文件
*
# 取消忽略所有带有后缀名的文件
!*.*
# 取消忽略所有目录
!*/

关于.gitignore规则不生效的问题

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

不忽略没有后缀名的文件

搜索电脑里没有后缀的文件

首先介绍一下,如何在电脑上如何观察搜索没有后缀的文件。直接上图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就是直接搜索文件类型。

不忽略无后缀名

如下:

!/**/SCSDKCoreKit
!/**/SCSDKCreativeKit
!/**/SCSDKLoginKit

就是直接不忽略所有改文件名的文件。

忽略某个已经托管给git的文件,防止二次提交

这种情况适用于,每个人修改了项目的配置,但是这个是临时的,只适用于自己本地的情况,不可提交给大家公用时,需要这么做。

# 执行命令将文件加入不提交队列
git update-index --assume-unchanged 你的文件路径
# 执行命令将文件取消加入不提交队列
git update-index --no-assume-unchanged 你的文件路径

参考链接

  • https://www.jianshu.com/p/74bd0ceb6182
  • https://www.cnblogs.com/fdxjava/p/15246131.html
  • https://blog.csdn.net/zhangyk11/article/details/124151075
  • https://www.52pojie.cn/thread-994748-1-1.html
  • http://www.taodudu.cc/news/show-711773.html?action=onClick

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

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

相关文章

请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨)为什么很多人说崖山海战以后无中国

目录 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 为什么很多人说崖山海战以后无中国 请问你如何理解以下的歌词“unravel - TK from 凛冽时雨 (TK from 凛として時雨) 以下是我对《unravel - TK from 凛冽时雨》这首歌词的理解&#xff1…

Hadoop部署伪分布式

伪分布式模式也是只需要一台机器,但是与本地模式的不同,伪分布式使用的是分布式的思想,具有完整的分布式文件存储和分布式计算的思想。只不过在进行存储和计算的时候涉及到的相关的守护进程都运行在同一台机器上,都是独立的Java进…

《LKD3粗读笔记》(15)进程地址空间

进程地址空间:内核除了管理本身的内存外,还必须管理用户空间中进程的内存,这个内存就是进程地址空间,即系统中每个用户空间进程所看到的内存。Linux操作系统采用虚拟内存技术,系统中的所有进程之间以虚拟方式共享内存。…

面试都不会造火箭,还想拿20k,过于离谱

前段时间公司缺人,也面了许多测试,一开始瞄准的就是中级水准,当然也没指望能来大牛,提供的薪资在15-20k这个范围,来面试的人有很多,但是平均水平真的让人很失望。看了简历很多上面都是写有4年工作经验&…

iOS App外包开发的内存泄露解决

在iOS应用开发中,内存泄露是一个常见的问题。内存泄露会导致应用程序占用越来越多的内存,最终可能导致应用程序崩溃。为了解决这个问题,可以使用以下工具和方法来查找和修复内存泄露。今天和大家分享这方面的知识,希望对大家有所帮…

AttributeError: module ‘gym‘ has no attribute ‘benchmark_spec‘解决办法

报错如下: 我安装的gym版本是gym-0.26.2 报错原因:gym版本太高了,需要降低版本 pip install gym0.9.0 -i https://pypi.douban.com/simple

@Qualifier注解详解

本文来说下Qualifier注解使用 文章目录 Autowired注解Qualifier注解Primary注解 Resource注解 Autowired注解 spring Autowire 的注解默认是按类型注入bean 如果存在多个实现类,可以使用 Qualifier注解 Qualifier注解 Primary注解 存在多个实现类,也可以…

支持双向充放电的高效Buck-Boost控制器——TMI5810

传统方案下,MCU需要分别控制“充电电路”和“放电电路”的功能模块实现电池包充放电,整个过程相当复杂,电路设计也比较繁琐。 拓尔微TMI5810是一颗集双向充放电和高效率于一身的同步升降压电源管理芯片,能有效解决多节锂电池充放电…

RAM Sequential

前段时间,在微信公众号上偶然看到一篇很不错的技术分享文章:《南湖处理器DFT设计范例》。文中详细介绍了中科院计算所的RISC-V处理器实施的DFT设计。 去年,也基于一款处理器应用过Share Test Bus技术,但在memory界面fault测试的问…

基于 ESP32 创建 HTTP Server 服务器,支持载入文件到服务器,并对载入文件进行删除管理

软件编程指南参见:HTTP 服务器 测试准备 任意一款 ESP32 系列开发板2.4GHz 路由器热点准备各种格式的文件 测试软件 可基于 esp-idf/examples/protocols/http_server /file_serving 例程进行测试 测试步骤 1、软件配置 只需要设置 ESP32 连接的 2.4GHz 的 WiFi…

linux 部署Nginx

1,进入官网下载Nginx资源: 官网下载:http://nginx.org/en/download.html 2、下载 nginx-1.20.2 3、上传服务器 /opt目录 4、解压nginx-1.20.2.tar.gz 到当前目录 tar -zxvf nginx-1.20.2.tar.gz 5、配置基本信息,命令如下 #配置config…

香港服务器如何操作域名解析让网站上线?

​  网站上线是一个需要多个步骤的过程,其中之一就是解析IP。在这个过程中,您需要将您的网站域名解析到香港服务器IP地址,以便访问者可以通过域名来访问您的网站。 下面是解析IP的一般步骤: 1. 获取服务器IP地址:首先…

回收站文件恢复教程:如何找回误删除的重要文件

在使用电脑的过程中,误删除文件是一件很常见的事情,尤其是对于那些不太熟悉电脑操作的人来说,这种情况更为普遍。当重要文件误删除之后,人们最希望的就是能够快速地找回它。其实,在 Windows 操作系统中,回收…

View的工作原理

View的工作原理 当Activity对象被创建的时候,会将DecorView添加到Window中,同时创建ViewRootImpl对象并将它和DecorView关联起来 ViewRoot对应于ViewRootImpl类,它是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot完成的 View的绘制是从ViewRoot的perf…

如何编写快速的SQL查询(一)——MySQL8.0优化器查询优化处理与样例

当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则让优化器能够按照预想的合理的方式运行。 MySQL是如何执行一个查询的过程的?根据图8-1可…

Java基础 变量与数据类型(类型转换)

变量 为什么需要变量 一花一世界,如果把一个程序看做一个世界或一个社会的话,那么变量就是程 序世界的花花草草、万事万物。即,变量是程序中不可或缺的组成单位,最基 本的存储单元。 初识变量 变量的概念 内存中的一个存储区域…

4.计算机网络基础

文章目录 1.网络互联模型2.常见网络协议(1)应用层协议:FTP、HFTP、HTTP(2)传输层协议:TCP、UDP三次握手、四次挥手(重要)TCP 和 UDP 区别(1)连接(…

【可乐荐书】人工智能数学基础

本栏目将推荐一些经典的、有趣的、有启发性的书籍,这些书籍涵盖了各个领域,包括文学、历史、哲学、科学、技术等等。相信这些书籍不仅可以让你获得知识,还可以让你感受到阅读的乐趣和魅力。 今天给大家推荐的书籍是:《人工智能数…

1688阿里巴巴中国站按关键字搜索抓取新品数据API接口展示示例(封装可高并发)(Java系列)

一、电商平台上新的重要性 电商平台上新非常重要。 首先,持续的新品上线可以吸引更多的用户访问平台和留存用户的兴趣。新品可以激发用户想要知道更多、购买更多的欲望,从而提高用户的使用频率和转化率。此外,新品上线也可以使电商平台更具…

windows下lib文件中的函数列表查看

可以使用Visual Studio中自带的dumpbin工具,首先应确保该文件路径已经加载到了环境变量中,以博主环境为例,其路径在 D:\xxxxxxxxxxxxx\Microsoft Visual Studio 14.0\VC\bin dumpbin.exe /LINKERMEMBER libfile.lib