.gitignore文件用于指定 Git 版本控制中需要忽略的文件和目录,避免不必要的文件被跟踪。
基本规则
- 
空行与注释: - 空行:被忽略,用于分隔规则。
- 注释:以 #开头,例如:
 gitignore# 忽略日志文件 *.log
- 
忽略文件/目录: gitignoretemp.txt # 忽略所有 temp.txt文件 build/ # 忽略所有 build 目录
- 
通配符: - *:匹配任意字符(除路径分隔符- /)。
 gitignore*.tmp # 忽略所有 .tmp 后缀文件- ?:匹配单个字符。
 gitignore??test.txt # 忽略 aatest.txt、abtest.txt 等- []:匹配括号内任一字符。
 gitignore[abc].txt # 忽略 a.txt、b.txt、c.txt
- 
路径分隔符 /:- 开头 /:仅匹配项目根目录。
 gitignore/config.env # 忽略根目录的 config.env(不忽略 src/config.env)- 结尾 /:仅匹配目录(不匹配同名文件)。
 gitignoredist/ # 忽略所有 dist 目录(不忽略 dist 文件)
- 开头 
- 
双星号 **:- 匹配任意层级目录:
 gitignorelogs/**/*.log # 忽略 logs/ 下所有子目录的 .log 文件 **/debug # 忽略所有名为 debug 的目录/文件
进阶规则
- 
取反规则 !:- 在忽略规则中排除特定文件(必须写在忽略规则之后):
 gitignore*.js # 忽略所有 .js 文件 !index.js # 不忽略根目录的 index.js- 注意 :若父目录被忽略,!无法生效(如logs/**被忽略后,!logs/error.log无效)。
 
- 
目录与文件的区别: - 
规则不包含 /时,同时匹配文件和目录:gitignorecache # 忽略 cache 文件和 cache/ 目录
- 
明确目录时添加 /后缀:gitignorecache/ # 仅忽略 cache 目录
 
- 
示例解析
            
            
              gitignore
              
              
            
          
          # 忽略所有 .class 文件
*.class
# 不忽略 target/ 下的 Example.class
!target/Example.class
# 忽略根目录的 .env 文件
/.env
# 忽略 node_modules 目录(任意位置)
node_modules/
# 忽略 docs 目录下所有 .md 文件(除 README.md)
docs/*.md
!docs/README.md
# 忽略 logs/ 及其子目录的所有文件
logs/**优先级与匹配顺序
- 规则按行从上到下匹配,后面的规则覆盖前面的冲突部分。
- 同一目录可存在多层 .gitignore文件,子目录规则优先级更高。
注意事项
- 
已跟踪文件的处理: - 
.gitignore对已加入版本控制的文件无效。需先删除跟踪:bashgit rm --cached <file> # 停止跟踪但不删除文件 git commit -m "停止跟踪文件"
 
- 
- 
全局忽略配置: - 
创建全局规则(适用于所有项目): bashgit config --global core.excludesFile ~/.gitignore_global
 
-