What .gitignore Does
A .gitignore file tells Git which files and directories to exclude from version control. Without one, you commit node_modules (hundreds of megabytes of dependencies), .env files (secrets), .DS_Store (macOS metadata), and compiled binaries. A good .gitignore covers every tool in your stack: operating system, editor/IDE, language, framework, and package manager.
Gitignore Pattern Syntax
node_modules/ # Ignore directory
*.log # Ignore all .log files
!.gitkeep # But NOT .gitkeep (negation)
dist/ # Ignore build output
.env # Ignore sensitive files
**/temp # Ignore 'temp' at any depth
Rules are processed in order. Later rules can negate earlier ones with !. Leading / anchors the pattern to the .gitignore's directory. ** matches any number of directories.
Categories Every .gitignore Should Cover
- Operating system:
.DS_Store(macOS),Thumbs.db(Windows),.directory(Linux). - Editor/IDE:
.vscode/(shared settings only),.idea/(JetBrains),*.swp(Vim). - Language runtime:
node_modules/,__pycache__/,vendor/,target/. - Framework:
.next/(Next.js),dist/(Astro, generic),build/(Create React App). - Environment & secrets:
.env,.env.local,*.pem. - Build artifacts:
*.o,*.class,*.exe. - Logs & temp:
*.log,tmp/,cache/.
Global vs. Local .gitignore
A local .gitignore lives in the repository root and is shared with the team via version control. A global .gitignore lives on your machine (~/.config/git/ignore) and covers personal tooling (your editor's personal settings, OS-specific files) without cluttering the repo's .gitignore. Use the global gitignore for things specific to you; use the repo .gitignore for things every contributor will encounter.
Generate a .gitignore Now
Use ToolsVito's .gitignore Generator — pick your OS, IDE, and languages to generate a complete, well-organized .gitignore file. Covers common patterns from gitignore.io templates. All generated in your browser.