【git】.gitignore的规则和写法

.gitignore用于设定git在提交时忽略特定文件,常用于排除中间文件、编译产物等。文件中包含匹配模式,如*.a忽视所有.a文件,!/bin/run.sh则不忽视bin目录的run.sh。忽略规则按命令行、.gitignore、$GIT_DIR/info/exclude和全局core.excludesfile的顺序应用,具有优先级差异。

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

.gitignore的作用

.gitignore文件是在git提交的时候用来屏蔽某些你不想提交上去的文件。
项目开发过程中,有时候不想把一些文件(如中间文件/编译文件等)提交到git上。这个时候就由.gitignore文件来筛选出不想提交的文件。所筛选的文件/夹将不会被追踪(tracked),push的时候也不会上传到git上。

语法规范

#:开头的行表示注释行
*:用来匹配零个或多个字符
*.a表示忽略.a文件;
*.[oa]表示忽略所有以.a和.o结尾的文件,*~忽略所有以~结尾的文件;
[]用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配0至9的数;
?用来匹配单个字符;
!:用来否定忽略,比如前面用了*.txt,然后使用!*a.txt,则这个a.txt不会被忽略
/:正斜杠在前:匹配项目根目录;如/bin表示忽略根目录下的bin文件,/bsp/表示忽略根目录下的bsp文件夹;
正斜杠在后:匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;如bsp/表示忽略bsp文件夹里的所有文件;
**:匹配多级目录,可在开始,中间,结束;

忽略优先级

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

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

常用匹配规则示例

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

参考文献

.gitignore的用法
.gitignore文件用法及如何配置

<think>嗯,用户想知道如何在.gitignore文件中屏蔽掉.idea文件夹。首先,我需要回忆一下.gitignore的基本语法规则。记得在.gitignore中,每一行都是一个模式,用来匹配要忽略的文件文件夹。 首先,用户提到的.idea文件夹通常是JetBrains的IDE(比如IntelliJ IDEA)生成的配置文件目录。这些文件不应该被提交到版本控制中,因为它们包含的是个人用户的配置,可能会影响其他使用不同IDE的开发者,或者导致不必要的冲突。 接下来,我要确定正确的屏蔽方式。对于文件夹,通常的做法是在.gitignore文件中添加文件夹的名称,后面加上斜杠/,这样可以明确表示这是一个目录而不是文件。所以,正确的写法应该是.idea/。不过,有时候可能直接写.idea也能生效,因为Git会自动识别目录,但加上斜杠更明确,避免可能的误匹配。 然后,需要考虑是否已经将.idea目录提交到了仓库中。如果之前已经提交过,仅仅在.gitignore中添加规则是不够的,还需要从Git的缓存中移除这些文件。这时候需要使用git rm --cached命令,例如git rm --cached -r .idea,然后重新提交。这样,之后的变更就不会再被跟踪了。 可能用户已经遇到了即使添加了.gitignore规则,但.idea仍然被跟踪的情况,这可能是因为缓存没有清理。这时候需要提醒用户清除缓存的重要性。另外,还要确认.gitignore文件的位置是否正确,通常应该放在项目的根目录下,否则规则可能不会生效。 还有,可能需要检查是否有其他.gitignore文件或全局的.gitignore配置覆盖了当前规则,但这种情况相对少见,除非用户有特别设置。所以重点还是放在项目根目录的.gitignore文件缓存处理上。 总结一下,步骤应该是:在.gitignore中添加.idea/,然后如果已经提交过,使用git rm --cached来移除,再提交.gitignore的更改。同时,提醒用户注意文件位置缓存的问题,确保规则生效。</think>在.gitignore文件中屏蔽.idea文件夹的操作步骤如下: 1. **创建/编辑.gitignore文件** 在项目根目录下新建或修改`.gitignore`文件(无后缀名) 2. **添加屏蔽规则** 在文件中添加以下任意一种形式: ```gitignore # 明确指定目录(推荐写法.idea/ # 或直接匹配目录名(效果相同) .idea ``` 3. **保存文件**后,Git会自动应用新规则 4. **处理已提交的情况**(如果之前已提交过该目录) ```bash # 从Git缓存中移除已跟踪的.idea目录 git rm --cached -r .idea # 提交本次变更 git commit -m "移除.idea目录的版本跟踪" ``` **注意:** - 斜杠`/`后缀明确表示屏蔽的是目录而非同名文件 - 规则应写在项目根目录的.gitignore中才有效 - 如果使用IDE自带的功能生成.gitignore,通常已包含对.idea目录的屏蔽规则 - 对于JetBrains系列IDE(IDEA/WebStorm等),建议同时屏蔽其他IDE配置文件: ```gitignore # 推荐完整的JetBrains IDE屏蔽配置 .idea/ *.iml modules.xml *.ipr *.iws ``` **验证方法**:执行`git status`命令,确认.idea目录不再出现在未跟踪文件列表中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

繁星知微

能帮助到你是我最大的荣幸

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

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

打赏作者

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

抵扣说明:

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

余额充值