gitignore *怎么用

本文介绍了.gitignore文件中星号*和两个星号**的作用,指出*用于匹配当前目录和*.txt文件,**用于匹配任意目录下的文件。同时提到.gitignore对已提交文件的影响,历史提交不受其控制。

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

1.在.gitignore文件中,星号*和两个星号**有不同的作用:

  1. 单个星号 *:在.gitignore中,单个星号*用于匹配零个或多个字符。例如,*.txt表示匹配所有以.txt结尾的文件。

  2. 两个星号 **搭配/使用:在.gitignore中,两个星号**用于匹配任意数量的目录层级。例如,**/.txt表示匹配任意目录下的所有.txt结尾文件,包括子目录中的文件。

总的来说,单个星号*主要用于匹配当前目录下的文件,而两个星号**则可以匹配任意目录下的文件。

2.三个例子理解忽略文件的逻辑

.txt: 忽略当前目录下名为.txt的文件

*.txt: 忽略当前目录下后缀是.txt的文件

**/.txt: 忽略任意目录下后缀是.txt的文件

3.gitignore对历史提交文件无效

如果先上传了.csv文件到存储库(repo)中,然后将.csv文件添加到.gitignore中,并重新提交并拉取存储库,之前上传的.csv文件不会自动从存储库中删除。.gitignore文件只会影响将来的提交,而不会影响已经提交的历史记录。

<think>好的,用户想了解Gitignore文件中单星号*和双星号**的区别。我需要先回忆一下git的文档,确保自己理解正确。记得*是匹配任意文件名,但不包括目录分隔符,而**是用于匹配任意层级的目录。比如,*.log会匹配所有目录下的.log文件,但docs/**/*.pdf可能匹配docs目录下所有子目录的pdf文件。 接下来要检查是否有常见的误解,比如用户可能认为*也可以匹配目录,但其实不是。需要明确说明两者的使用场景,比如单星号适合匹配特定扩展名的文件,双星号用于递归目录。还要举例子,比如temp/*忽略temp下的直接文件,而temp/**会忽略temp下的所有文件和子目录。 另外,要注意路径的问题,如果用户指定了目录,比如/docs/*,那么只会匹配docs下的直接文件和目录,而/docs/**/*.txt会匹配所有子目录中的txt文件。可能需要强调斜杠的位置影响匹配范围。 还需要考虑特殊情况,比如a/**/b是否能匹配a/b、a/x/b、a/x/y/b等,是的,因为**可以匹配零或多层目录。这时候需要举例说明不同情况下的匹配结果。 最后,整理这些点,分点解释,给出使用场景和示例,确保用户能清晰理解两者的区别。同时生成相关问题,比如如何忽略特定目录下的所有文件,或者如何递归忽略某种类型的文件,这样用户可以有进一步的问题参考。</think>### Gitignore 中单星号 `*` 与双星号 `**` 的区别 #### 1. 单星号 `*` 的用法 - **功能**:匹配任意长度的字符,但**不跨越目录层级**,即不匹配目录分隔符(`/`)。 - **适用场景**: - 匹配同一目录下的特定文件或子目录名。 - 忽略特定扩展名的文件(如 `*.log` 忽略所有 `.log` 文件)。 - **示例**: - `temp/*`:忽略 `temp` 目录下的直接子文件和子目录,但**不递归**子目录内容。 - `*.tmp`:忽略所有目录下的 `.tmp` 文件[^1]。 #### 2. 双星号 `**` 的用法 - **功能**:匹配任意层级的目录结构,可跨越目录分隔符。 - **适用场景**: - 递归忽略多级目录中的文件或目录。 - 结合路径使用时,灵活控制匹配范围。 - **示例**: - `logs/**/*.bak`:忽略 `logs` 目录及其所有子目录中的 `.bak` 文件。 - `build/**`:忽略 `build` 目录下的所有内容(包括子目录和文件)。 #### 3. 关键区别总结 | 语法 | 是否跨目录 | 示例匹配范围 | |---------|------------|-----------------------------------| | `*` | 否 | `dir/file`,但不匹配 `dir/sub/file` | | `**` | 是 | `dir/file`、`dir/sub/file` | #### 4. 路径对匹配的影响 - 若包含路径前缀: - `docs/*.txt`:仅匹配 `docs` 目录下的 `.txt` 文件。 - `docs/**/*.txt`:匹配 `docs` 及其所有子目录中的 `.txt` 文件。 - 若以 `/` 结尾: - `cache/*/`:仅忽略 `cache` 下的直接子目录(不忽略文件)。 - `cache/**/`:忽略 `cache` 下的所有子目录(递归)。 #### 5. 特殊案例说明 - `a/**/b` 可匹配: - `a/b`(零层目录) - `a/x/b`(一层目录) - `a/x/y/b`(多层目录) ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值