【git】.gitignore 个人总结

本文详细介绍了Git版本控制系统中的.gitignore文件,包括其格式、匹配规则、特殊符号含义以及如何编写和应用忽略规则,帮助开发者管理版本控制中的文件选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 简介

.gitignore是一个用于指定Git版本控制系统忽略特定文件或文件夹的配置文件。当我们在项目中添加文件并想要将它们纳入到版本控制中时,有时我们也会有一些不希望纳入版本控制的文件,比如编译生成的文件、日志文件、配置文件、临时文件等。这种情况下,我们可以在项目根目录下创建一个名为.gitignore的文件,列出需要忽略的文件和文件夹的规则,Git会根据这些规则来判断哪些文件应该忽略。

2. 格式


匹配文件名

* 	:	匹配0或多个字符
?	:	匹配1个字符
[]	:	匹配列表
\	:	转义字符

匹配文件夹:

**	:	匹配多级目录,0或多级目录

其他:

/	:	只匹配根目录下文件或者文件夹

空格	: 不影响,分隔段落而已
#	:	注释

!	:	排除后的文件,被再次显示可被跟踪

remark:

  1. 可以组合使用的,有些是用于控制文件夹,有些是用于控制文件
    如/*.log 忽略根目录下所有a.log b.log c.log文件
    如/a[bcd].log 忽略根目录下ab.log ac.log ad.log 文件

3. 参考

测试用的工程结构

.
├── a
│   ├── a
│   │   ├── a
│   │   │   └── a.log
│   │   └── b
│   │       ├── ab.log
│   │       ├── ac.log
│   │       ├── a.log
│   │       └── b.log
│   └── b
├── ab.log
├── ac.log
├── a.log
├── b
│   └── log
└── b.log

1. 文件名

a.log		:	匹配所有目录下的所有a.log文件
a.log
a/a/a/a/a.log

2. *.后缀

*.log		:	匹配所有目录下的所有*.log文件
a.log
b.log
a/a/a/b/a.log
a/a/a/b/b.log
...

3. ?.后缀

?.log	:	匹配所有目录,只匹配文件名单个字符文件
匹配:
a.log
b.log
a/a/b/a.log
a/a/b/b.log
不匹配:
ab.log
ac.log
a/a/b/ab.log
a/a/b/ac.log

4. []

a[bc].log	:	匹配所有目录,只匹配文件名ab.log ac.log文件
匹配:
ab.log
ac.log
a/a/b/ab.log
a/a/b/ac.log
不匹配:
a.log
b.log
a/a/b/a.log
a/a/b/b.log

5. \

a\!c	:	转义字符
匹配:a!c

6. **

**/a.log	:	匹配多级目录下的a.log文件,一般会限定文件夹,如下:
/a/**/a.log	:	这样可以确保是在/a/目录下,匹配所有a.log
**/a.log 	:	匹配结果同 a.log,匹配所有文件夹下的a.log

/a/**/a.log	:	只匹配/a/文件夹下的所有a.log,会递归查找
匹配:
a/a/a/a.log
a/a/b/a.log
不匹配:
a.log

7. /

/a.log	:	只匹配根目录下文件
只匹配:
a.log
不匹配:
a/a/a/a.log
a/a/b/a.log
...

8. !

  1. 若已经被排除了,可以使用!再次将文件显示,用于跟踪
  2. 假设我们需要跟踪/a/a/b/a.log, 而不跟踪a/a/b/目录下的其他文件,
    在这里插入图片描述

上图中,/a/a/b/目录下所有文件都被忽略了,即无法git status 无法显示/a/a/b/a.log文件
添加一行,排除/a/a/b/a.log文件

在这里插入图片描述

  1. 注意点
    3.1 如果匹配了/a/a/b/a.log文件所属的父文件夹,即/a/a/b/文件夹,则使用!不会再生效。
    在这里插入图片描述
### 如何在 `.gitignore` 文件中新增忽略规则 当需要让 Git 忽略某些特定文件或目录时,可以在项目的根目录下的 `.gitignore` 文件中定义这些忽略模式。每一个新行可以包含一个新的忽略规则。 #### 编辑 `.gitignore` 文件并添加规则 为了向 `.gitignore` 文件中增加新的忽略规则,需先找到该文件所在位置,通常位于版本库的根目录下。如果此文件不存在,则可创建一个名为 `.gitignore` 的文本文件[^2]。 一旦打开了 `.gitignore` 文件,就可以按照如下方式来编写规则: - **简单匹配**: 可以直接写入要忽略的具体文件名或通配符表达式的路径。例如 `*.log` 表示忽略所有的日志文件。 - **绝对路径与相对路径**: 使用 `/` 开头表示相对于`.gitignore` 所处位置的固定路径;而没有斜杠则代表任意子目录中的同名项都会被忽略[^4]。 - **排除已忽略的内容**: 如果之前已经设定了较宽泛的选择条件,在其后加上感叹号前缀 (`!`) 来反转效果,即重新纳入考虑范围内的条目。比如忽略了所有 `.txt` 文件后再特别指明保留某个具体的 `.txt` 文件。 #### 示例代码展示 下面是一个简单的例子,展示了如何设置不同类型的忽略规则: ```plaintext # 忽略所有 .a 结尾的目标文件 *.a # 但是不忽略 lib.a 这个目标文件 !lib.a # 忽略所有 .o 和 .class 类型的对象文件以及类文件 *.[oa] # 忽略整个 build 目录及其内部的所有内容 /build/ # 忽略所有临时备份文件 *~ # 排除对 /temp/example.txt 的忽略(即使有更广泛的忽略规则) !/temp/example.txt ``` 完成上述操作之后,记得通过命令将更新后的 `.gitignore` 提交至仓库以便生效: ```bash git add .gitignore git commit -m "Update .gitignore with new ignore rules" ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

过得精彩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值