Explain .gitignore code
Paste a .gitignore and Vibe explains which files each line leaves out, what a leading or trailing / changes and why a ! line sometimes can't bring a file back.
Up to 1,500 characters (about 60 lines). Your code is sent to Unvibe and Anthropic to write the explanation. Don't paste keys or passwords. Common key formats are refused.
Vibe21 lines selected
Press Explain it for the sample, or paste your own code first.
What this .gitignore sample shows
- patterns
- Each line is a pattern, and
#starts a comment.*matches any run of characters except/, so*.logleft out bothdebug.logat the top andlogs/today.logone folder down: a pattern with no slash in it matches in every folder..env.*caught.env.local. - slashes and folders
- A slash at the end, as in
dist/, matches only folders and everything inside them: a plain file calleddistwas still listed bygit status. A slash at the start ties the pattern to the folder the .gitignore is in, so/build/left outbuild/out.jsbut keptsrc/build/helper.js. - negation
- A line starting with
!brings back a file an earlier line left out, and the last line that matches wins. That kept.env.example,.vscode/extensions.jsonanduploads/.gitkeepwhile the rest of.env.*,.vscode/anduploads/stayed out. - tracked files
- A .gitignore only affects files git isn't tracking yet. With
.envalready committed, adding it here changed nothing:git statusstill showedM .envafter an edit.git rm --cached .envstopped tracking it and left the file on disk, and from then on git ignored it.
Good to know
- Run with git 2.55.0 on a test project with 15 files besides the .gitignore,
git statuslisted only.gitignore,.env.example,.vscode/extensions.json,src/app.js,src/build/helper.jsanduploads/.gitkeep; everything else was left out. git check-ignore -v <file>prints the line that decides a file, with its line number. For a file a!line keeps, it prints that!line, so check that the pattern it names doesn't start with!before reading the file as ignored.- Commit the .gitignore itself, so everyone working on the project gets the same rules. Rules that are only yours go in
.git/info/exclude, which works the same way and is never shared:notes-to-self.mdlisted there was left out ofgit statusin this repo only.
Watch out: ! can't bring back a file whose folder is left out, because git never looks inside that folder. With logs/ and then !logs/keep.txt, git status still didn't list logs/keep.txt. Writing logs/* leaves out the folder's contents instead of the folder, and then !logs/keep.txt worked.
Explain .gitignore code beside your editor
Unvibe is a free app for Mac and Windows. In the app there is no pasting: select code in any app and press Control+U (Ctrl+Alt+U on Windows).
Install on Mac
curl -fsSL https://unvibe.site/install.sh | bashPaste into Terminal. Unvibe isn't notarized by Apple yet, so this is the smooth path.
Or download the .dmg · Intel Mac build · SHA-256 checksums
Opening the .dmg the first time
- Open the .dmg and drag Unvibe to Applications.
- Open it once; macOS says it can't verify it. Click Done.

Real screen, macOS 15 - System Settings › Privacy & Security › Open Anyway. Confirm, then enter your Mac password. The button shows for about an hour after you try to open Unvibe.

Real screen, macOS 15
The Terminal line checks the download against the published SHA-256 and Unvibe's self-signed signature before it installs anything. More help with the first open