gitignore

95 阅读3分钟

.gitignore文件解释

!**/glob-import/dir/node_modules
.DS_Store
.idea
.pnpm-store
*.cpuprofile
*.local
*.log
/.vscode/
/docs/.vitepress/cache
/packages/vite/LICENSE
dist
dist-ssr
explorations
node_modules
playground-temp
temp
TODOs.md
.eslintcache
  1. 特殊规则

!**/glob-import/dir/node_modules

  • ! 表示取反,即不忽略这个文件/目录
  • 这是一个例外规则,表示 glob-import/dir/node_modules 目录下的文件会被 Git 追踪
  1. 系统文件
.DS_Store        # macOS 系统生成的文件夹显示属性文件
.idea           # JetBrains IDE(如 WebStorm)的配置目录
  1. 包管理器相关
.pnpm-store     # pnpm 包管理器的存储目录
node_modules    # 所有依赖包的安装目录
  1. 构建输出
dist            # 构建输出目录
dist-ssr        # SSR(服务端渲染)构建输出目录
  1. 临时文件
*.cpuprofile    # Node.js CPU 性能分析文件
*.local         # 本地配置文件
*.log           # 日志文件
playground-temp # 临时 playground 目录
temp            # 临时文件目录
  1. IDE 和编辑器
/.vscode/       # VS Code 配置目录
  1. 文档相关
/docs/.vitepress/cache  # VitePress 文档的缓存目录
  1. 许可证文件
/packages/vite/LICENSE  # Vite 包的许可证文件
  1. 其他
explorations    # 探索性代码目录
TODOs.md        # TODO 列表文件
.eslintcache    # ESLint 缓存文件

不同路径的解释

  1. / 开头
/.vscode/        # 只忽略根目录下的 .vscode 目录
/dist           # 只忽略根目录下的 dist 目录
  • 表示从项目根目录开始匹配
  • 只匹配根目录下的文件/目录
  • 不会匹配子目录中的同名文件/目录
  1. ./ 开头
./dist          # 忽略当前目录下的 dist 目录
./*.log         # 忽略当前目录下的所有 .log 文件
  • 表示从当前目录开始匹配
  • 效果与直接写文件名相同
  • 不推荐使用,因为 .gitignore 总是相对于项目根目录
  1. * 开头
*.log           # 忽略所有目录下的 .log 文件
*.local         # 忽略所有目录下的 .local 文件
  • 表示匹配任意目录下的文件
  • 只匹配文件名,不匹配目录名
  • 常用于忽略特定类型的文件
  1. ** 开头
**/node_modules  # 忽略所有目录下的 node_modules
**/*.log        # 忽略所有目录下的 .log 文件
  • 表示匹配任意深度的目录
  • 可以匹配任意目录下的文件/目录
  • 常用于忽略特定类型的文件/目录
  1. 直接以文件名开头
.DS_Store       # 忽略所有目录下的 .DS_Store 文件
node_modules    # 忽略所有目录下的 node_modules 目录
  • 表示匹配任意目录下的文件/目录
  • 效果与 **/ 开头相同
  • 最常用的写法
  1. 结尾带 /
dist/           # 忽略所有 dist 目录
.vscode/        # 忽略所有 .vscode 目录
  • 表示只匹配目录,不匹配文件
  • 更明确的表示这是一个目录
  • 建议对目录使用这种写法
  1. 结尾不带 /
dist            # 忽略所有 dist 文件或目录
.vscode         # 忽略所有 .vscode 文件或目录
  • 表示匹配文件或目录
  • 不够明确,可能造成混淆
  • 不推荐使用
  1. 组合使用
**/dist/**      # 忽略所有 dist 目录及其内容
**/*.log        # 忽略所有 .log 文件
!**/dist/README.md  # 不忽略 dist 目录下的 README.md

最佳实践

  1. 目录匹配
# 推荐
dist/           # 明确表示是目录
.vscode/        # 明确表示是目录

  1. 文件匹配
# 推荐
*.log           # 匹配所有 .log 文件
.DS_Store       # 匹配所有 .DS_Store 文件

  1. 特定目录匹配
# 推荐
/src/dist/      # 只匹配 src 目录下的 dist
/docs/.vitepress/cache/  # 明确指定路径

  1. 全局匹配
# 推荐
node_modules/   # 匹配所有 node_modules 目录
*.local         # 匹配所有 .local 文件
  1. 例外规则
# 推荐
!**/dist/README.md  # 不忽略特定文件
!**/glob-import/dir/node_modules  # 不忽略特定目录