如何在.gitignore中配置:排除admin文件夹及content下非PHP/JS文件
正确的.gitignore配置方案
你的问题出在最后两行的全局恢复规则——!.php和!.js会把所有目录(包括admin里)的这类文件都加回跟踪列表,这就破坏了“完全排除admin文件夹”的要求。下面是符合需求的正确配置:
# 完全排除admin文件夹及其所有内容 **/admin/ # 处理content文件夹:先排除所有内容,再恢复指定文件 # 1. 排除content下所有层级的文件和子目录 **/content/** # 2. 允许content下所有层级的.php文件 !**/content/**/*.php # 3. 允许content下所有层级的.js文件 !**/content/**/*.js # 可选:确保content文件夹本身不被忽略(如果需要保留空目录结构,否则git会自动保留有允许文件的目录) !**/content/
规则解释:
**/admin/:用**匹配任意层级的目录,末尾的/明确指定是文件夹,这样admin文件夹里的所有内容都会被彻底排除,不会被任何后续规则覆盖。**/content/**:匹配content文件夹下所有层级的文件和子目录,先把它们全部排除。!**/content/**/*.php和!**/content/**/*.js:仅针对content目录下的.php/.js文件取消排除,这样就不会影响admin里的文件。- 最后一行
!**/content/是可选的,如果你的content文件夹里没有符合规则的文件(比如空目录),git默认不会跟踪空目录,加上这行可以强制保留目录结构;如果有允许的文件存在,git会自动包含该目录,这行可以省略。
为什么你的原配置会出错?
原配置里的!.php和!.js是全局范围的规则,会覆盖之前对admin文件夹的排除,导致admin里的.php/.js文件被错误允许。我们需要把恢复规则的作用范围限定在content目录内,这样就不会影响admin的排除规则了。
内容的提问来源于stack exchange,提问作者T.Todua




