CFG-06 · Version control

.gitignore generator

Pick your languages, editor, and OS — get one merged, deduplicated .gitignore with a section header per template.

Language / framework

Editor

Operating system

.gitignore

Pick at least one template above…

Templates are condensed from the community conventions at github.com/github/gitignore — a good starting point, not a guarantee nothing project-specific slips through.

Why a generic .gitignore still needs a look before you commit

These templates cover what's true for almost every project in a language or editor — they can't know your project's specific build output folder, a local config file with real credentials in it, or a data directory you don't want tracked. Treat the generated file as a strong starting point, then add project-specific lines on top.

What to do about files already tracked before you added a rule

.gitignore only stops untracked files from being added — a file Git already tracks keeps being tracked even after it matches a new ignore rule. Untrack it first with git rm --cached path/to/file (keeps the file on disk, just stops tracking it), then commit; only then does the ignore rule actually take effect for it.

Why is my file still showing up in git status after I added it to .gitignore?

Because Git already tracks it — .gitignore only affects files Git doesn't know about yet. Run git rm --cached <file> to untrack it (the file stays on disk), commit that change, and the ignore rule takes effect from then on.

Can I combine multiple language templates in one project?

Yes — that's exactly what this tool is for. A repo with a Python backend and a Node frontend, opened in VSCode on macOS, just needs all four templates merged into one file, which is what selecting multiple chips does.

Should secrets and .env files really rely on .gitignore alone?

No — .gitignore only prevents an accidental first commit; it does nothing for a file that's already committed, and it's not a security boundary on its own. Real secrets belong in a secrets manager or untracked local config, with .gitignore as a backstop, not the primary control.