忽略目录中的所有文件,除了特定文件

Published on
Published on
/2 mins read/---

保留目录中的1个文件,忽略其他文件

.gitignore

.gitignore
# 忽略目录中的所有文件
directory/*
 
# 只保留这个文件
!directory/file-to-keep.ext

工作原理

这个技巧使用了Git的两个关键概念:

  1. 通配符匹配 (directory/*): 匹配指定目录下的所有文件和子目录
  2. 否定模式 (!directory/file-to-keep.ext): 使用感叹号(!)来排除特定文件,即使它们匹配了之前的忽略规则

实际应用场景

这种模式在以下情况下特别有用:

  • 配置目录: 忽略所有配置文件,但保留配置模板

    config/*
    !config/config.example.json
  • 日志目录: 忽略所有日志文件,但保留.gitkeep文件

    logs/*
    !logs/.gitkeep
  • 构建目录: 忽略所有构建文件,但保留README

    dist/*
    !dist/README.md

注意事项

  • 否定模式必须在忽略模式之后
  • 如果父目录被忽略,无法通过否定模式重新包含其子文件
  • 确保文件路径的准确性,包括文件扩展名