深入理解 .gitignore 文件中的通配符使用和忽略规则

您所在的位置:网站首页 通配符000255 深入理解 .gitignore 文件中的通配符使用和忽略规则

深入理解 .gitignore 文件中的通配符使用和忽略规则

2023-12-14 16:54| 来源: 网络整理| 查看: 265

image.png

前言

最近在开发项目时,有这样一个需求。之前使用 .gitignore 时忽略了整个文件夹的版本控制,如下图所示:忽略了 unpackage/ 整个文件夹及其下属内容。而现在忽然需要对其中的 dist、res 目录放开忽略,其它的文件夹还是需要继续忽略,要怎么实现呢?

image.png

经过了解一番,才得知:在.gitignore文件中,可以使用通配符解决以上这个问题,可以设置一下排除规则与过滤策略。

通配符!表示:否定模式,表示指定不忽略某些文件或文件夹。

先说解决方案,后面我们进行详细说明几种通配符的作用,因此,以上的需求可以使用如下忽略代码进行优化:

# 匹配根目录下的 unpackage 文件夹 /unpackage/ # 取消对 unpackage 下的 dist 文件夹的忽略 !/unpackage/dist/ # 取消对 unpackage 下的 dist 文件夹的忽略 !/unpackage/res/ 一. 通配符

在 .gitignore 文件中,通配符用于匹配文件和文件夹的名称,以控制 Git 忽略哪些文件或文件夹。下面是一些常用的通配符的使用示例:

*:匹配零个或多个字符。

例如,*.txt会匹配所有以.txt结尾的文件。

?:匹配一个字符。

例如,test?.txt会匹配 test1.txt 和 test2.txt,但不会匹配 test12.txt。

**:匹配零个或多个目录。

例如,logs/**/*.log会匹配 logs/a/b/c.log、logs/x/y/z.log等。

/:指定路径。

例如,/logs/会匹配根目录下的 logs 文件夹,但不会匹配 src/logs。

!:否定模式,表示不忽略某些文件或文件夹。

例如,!debug/会取消对 debug 文件夹的忽略。

使用通配符的一些示例:

忽略所有的 .txt 文件:

*.txt

忽略某个特定文件夹下的所有文件:

path/to/folder/

忽略所有以 .log 结尾的文件,但不包括 important.log:

*.log !important.log

忽略某个文件夹及其子文件夹下的所有 node_modules 文件夹:

node_modules/

需要注意的是,.gitignore 文件可以放在项目的根目录下,也可以放在特定的子目录下,它会对该目录及其子目录生效。

讲到这里,我们顺便重温一下 .gitignore 的各种常用的操作吧!巩固加深一下对它的理解。

二. .gitignore 中常用的忽略规则

.gitignore 是一个用于配置 Git 版本控制系统忽略指定文件或目录的规则文件。它可以用来排除不需要提交到代码仓库中的临时文件、编译产物、个人敏感信息等。下面对 .gitignore 中常见的操作进行详解:

1. 注释:

以井号(#)开头的行表示注释,被Git忽略。

# file.txt 2. 空行:

空行会被Git忽略。

3. 目录的忽略:

要忽略整个目录,只需要在.gitignore文件中添加目录名称即可,例如:

dir/

这将忽略目录dir/下的所有文件和子目录。

4. 特定文件的忽略:

要忽略特定文件,只需要在.gitignore文件中添加文件名称,例如:

file.txt

这将忽略根目录下的file.txt文件。

5. 通配符的使用:

可以使用通配符来匹配多个文件或目录。常用的通配符有:

*:匹配任意长度的字符串,但不匹配目录分隔符(斜杠/)。 **:匹配任意长度的字符串,包括目录分隔符。 ?:匹配任意一个字符。 []:匹配一组字符。 !:用于对规则进行否定。

例如:

*.txt // 忽略所有以.txt结尾的文件 build/ // 忽略根目录下的build目录 tmp/*.log // 忽略tmp目录下所有.log文件 test/**/*.tmp // 忽略test目录及其子目录下的所有.tmp文件 !src/foo.txt // 不忽略根目录下的src目录下的foo.txt文件

更多通配符的使用请参考上面

6. 文件类型模板:

Git 提供了一些常见文件类型的模板,可以直接使用,例如:

*.html // 忽略所有HTML文件 *.o // 忽略所有目标文件

可以在.gitignore文件中使用这些模板,避免重复配置。

7. 模式的优先级:

.gitignore 文件中的模式按照从上到下的顺序逐条匹配,如果遇到匹配的模式,则后面的模式不再生效。如果要取消对某个文件的忽略,可以使用!前缀特别指定。

需要注意的是,已经被Git跟踪的文件不会受到 .gitignore 的影响。要忽略已经被提交的文件,可以使用 git rm --cached 命令将其从版本控中移除。

结语

综上所述,.gitignore 文件是配置 Git 忽略特定文件和目录的规则文件。通过使用注释、行、目录忽略、特定文件忽略、通配符和文件类型模板等操作,可以灵活地配置和管理需要忽略的文件。

正确的使用通配符的使用可以优雅且灵活的实现各种文件及文件夹的忽略策略!

同时,正确定义 .gitignore 文件可以有效地减少代码仓库的不必要的提交,提高版本控制的效率。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3