You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

gitignore例外规则不生效怎么办?嵌套目录下.gitkeep仍被忽略

.gitignore嵌套目录下.gitkeep不生效的解决方案

问题核心原因

Git的忽略规则有个关键逻辑:如果某个目录被标记为忽略,Git会直接跳过该目录,不会再扫描其中的任何子文件或子目录。

你写的somedir/local/*会忽略somedir/local下的所有文件和子目录(包括ssh目录本身)。既然ssh目录被忽略了,后续的!somedir/local/ssh/.gitkeep规则根本不会被执行,自然无法保留这个文件。

而非嵌套场景下,somedir/local/.gitkeep在local目录下,local本身没有被忽略(只是忽略了它的子内容),所以!规则能正常触发生效。

针对性解决方案

1. 仅保留指定嵌套目录下的.gitkeep

如果只需要保留somedir/local/ssh/.gitkeep,按以下规则编写:

# 忽略somedir/local下的所有内容
somedir/local/*
# 取消忽略ssh目录(必须先让Git能扫描到这个目录)
!somedir/local/ssh/
# 忽略ssh目录下的所有内容
somedir/local/ssh/*
# 保留ssh目录下的.gitkeep
!somedir/local/ssh/.gitkeep

2. 全局保留所有嵌套目录下的.gitkeep

如果要实现“所有.gitkeep都不被忽略”的需求,需要先确保所有子目录都能被Git扫描到,再忽略文件、保留.gitkeep:

# 忽略somedir/local下的所有文件,但不忽略子目录
somedir/local/*
!somedir/local/**/
# 忽略所有子目录下的文件,除了.gitkeep
somedir/local/**/*
!somedir/local/**/.gitkeep

这里的**是递归通配符,会匹配所有层级的子目录和文件。

内容的提问来源于stack exchange,提问作者paul23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:47:05