Build a .gitignore from 61 templates for languages, frameworks, editors and systems
Runs in your browser. Nothing you type is sent anywhere. Checked against sources on 16 Oct 2026.A .gitignore file lists the files git should leave untracked, one pattern per line. Pick the templates for your stack, such as Node.js, macOS and VS Code, from 61 official github/gitignore templates; they merge into one file you copy or download, and any path can be tested against the rules before you commit.
Tap the templates for your project, such as Node.js, macOS and VS Code, or search for one by name.
Add your own lines, such as *.pem or scratch/, in the Your own rules box.
Type a few paths under Test paths to see which ones git will ignore and which rule decides.
Click Copy, or Download, and save the file as .gitignore in the top folder of the repository.
Every new repository needs a .gitignore before the first commit, or build output, dependencies and editor settings end up in history. GitHub publishes one template per language, framework, editor and operating system; this page has 61 of them, at a fixed commit, and merges the ones you tap into a single file.
Merging without surprises. Templates overlap: Node.js, Next.js and NestJS all ignore logs. A repeated line is removed only when no ! rule stands between the two copies, so the merged file ignores exactly what the templates ignore one after another. The page says how many lines it removed.
Testing paths. Type paths under Test paths, one per line, with a slash at the end of a folder. Each is marked ignored or kept, with the line number and the rule that decided it. The matching follows git's own rules:
| Pattern | Matches | Does not match |
|---|---|---|
*.log |
debug.log, logs/app.log |
log.txt |
build/ |
the folder build at any depth |
a file named build |
/dist |
dist at the top only |
src/dist |
doc/*.txt |
doc/a.txt |
doc/sub/a.txt |
**/secrets/** |
api/secrets/key.pem |
secrets itself |
!keep.log |
brings keep.log back |
a file in an ignored folder |
A file in an ignored folder stays ignored. Git does not look inside an ignored folder, so !secret/ok.txt after secret/ has no effect. Write secret/* instead, and the ! line works.
Already tracked files. A .gitignore only affects untracked files. If a file was committed before, remove it from the index with git rm --cached and commit; the file stays on your disk.
The path tester was checked against git check-ignore on more than 1,000 paths, across hand-written rule sets and real templates. Everything runs in your browser; nothing you type is sent anywhere.
Save it as .gitignore, with the leading dot and no extension, in the top folder of the repository, next to the .git folder. Patterns with a slash at the start or in the middle are read from that folder. A .gitignore in a subfolder also works and applies only below it.
A .gitignore only affects files git is not tracking yet. Once a file has been committed, git keeps following it. Run git rm --cached followed by the path, commit, and from then on the rule applies. The file stays on your disk; only its copy in the index goes.
Ignore the folder's contents rather than the folder: write logs/* and then !logs/keep.txt. If you write logs/ instead, git skips the whole folder without looking inside, so the ! line can never bring the file back. The Test paths box shows which case you are in.
A slash at the end limits the pattern to folders, so build/ ignores a folder named build but not a file. A slash at the start or in the middle ties the pattern to the folder of the .gitignore, so /dist ignores the top dist only. Without a slash, the pattern matches at any depth.
Yes. The 61 texts come unchanged from the github/gitignore repository at a fixed commit, the collection GitHub uses when you create a repository, published under the CC0 licence. Each block in the result is headed with the template name, so you can see where a rule came from.
Yes, as git is on Linux and in most CI systems, so Build/ does not match a folder named build. On Windows and macOS, git usually sets core.ignorecase to true and ignores case, so a pattern may match locally but not on the build server. Write patterns in the exact case of the files.
Rates and rules change; check the source before you rely on a figure.
Still stuck? Ask about .gitignore Generator and anybody who knows can answer. No account needed.
On the related tools: Cron Expression Generator – Generate a cron expression by choosing when the job should run · Sitemap Index Generator – Split a large site into numbered sitemaps with an index file · Google Analytics URL Builder – The five utm parameters GA4 reads, with the naming traps flagged.