# Git Toolkit: .gitignore and Commit Messages

Paste paths to see which line of your .gitignore ignores them, or does not. If a parent folder is excluded, the page also shows why a ! line cannot bring a file back. The rules follow git, and nothing leaves your browser.

- URL: https://tools.itlibra.com/en/git-toolkit
- On-device・No upload
- Last updated: 2026-10-26

## How to use

1. Paste your project root .gitignore into “.gitignore contents”, or choose the file.
2. Enter the paths to test in “Paths to check”, one per line. “Choose a folder” reads only the names and lists them.
3. Read the “Deciding line” to see which rule settled the result. If a parent folder is excluded, that folder is named.
4. Use “Make a .gitignore” to combine common presets such as Node, Python or Java, then copy or save the file.
5. Paste a commit message in “Commit message” to check the Conventional Commits format and the subject length.

## Use cases

- Find out why a file is not ignored although it is in .gitignore, or is ignored when it should not be
- A “!” rule does not bring a file back. Check whether a parent folder is excluded
- Create a .gitignore quickly for a new Node or Python project
- Keep the team’s commit messages in the form “type(scope): description”
- Check the git rm --cached steps for a file that is already tracked

## What it does

### Per-path verdicts with the deciding line

For each path the last matching line is shown with its line number, so you know which line to change.

### Parent-folder exclusion as in git

As in git, a file inside an excluded folder is not brought back by a “!” line. The page reproduces this.

### Judged by the pattern rules of git

Handles the slash position (anchored or not), a trailing slash (folders only), \*\*, !, escaped # and !, trailing spaces and \[...\] brackets, as in the git documentation.

### Generate from common presets

Choose Node.js, Python, Java, Go, macOS, Windows, JetBrains or VS Code. Duplicate lines are removed, and the source is written in the file.

### Commit message format check

Checks Conventional Commits 1.0.0: type(scope)!: description, body, footers and BREAKING CHANGE, and shows the subject length.

### Folders: names only

Choosing a folder reads only the file names. Contents are not read and nothing is sent anywhere.


## Capability matrix

| Feature | Support | Notes |
| --- | --- | --- |
| Per-path verdict (ignored or not) from .gitignore | Supported | — |
| Deciding line with its number, and parent-folder exclusion | Supported | — |
| Negation (!), \*\*, \[...\] and the trailing-slash rule | Supported | Follows the git PATTERN FORMAT |
| .gitignore generation from common items | Partial | An excerpt of 8 presets, not every template |
| Commit message format and subject length check | Supported | — |
| Judging the quality of a commit message’s content | Not supported | Only format and length are checked |
| .gitignore in subfolders, .git/info/exclude, global excludes | Not supported | Not read |
| Verdicts for files already tracked by Git | Not supported | Shows the git rm --cached steps instead |
| Running git commands or accessing a repository | Not supported | — |
| Reading paths from a folder | Partial | File names only; contents are not read |

## Limits & notes

- The .gitignore is limited to 500,000 characters and 5,000 lines; up to 5,000 paths are checked.
- Case is significant by default, as on Linux. With core.ignorecase enabled it is not.
- A file that Git already tracks is not ignored by .gitignore. This note is always shown.
- Confirm real results with git check-ignore -v in a repository. This tool does not replace it.

## Privacy & safety

The .gitignore, the paths and the commit message are processed only in your browser. Nothing is sent or stored. When you choose a folder, only file names are read. Closing the page clears everything.

## FAQ

### Why is a file not ignored although it is in .gitignore?

A common reason is that Git already tracks the file. To stop tracking it, run git rm --cached on it and then add it to .gitignore. Other causes include a .gitignore in the wrong folder or trailing spaces on a line.

### Why does a “!” line not bring the file back?

A parent folder is excluded. In git, a file inside an excluded folder cannot be brought back by a “!” line. Bring back the folder itself, or write the rule as “folder/\*” so the folder is not excluded.

### What does a “/” in a .gitignore line mean?

A “/” at the start or in the middle anchors the pattern to the folder that holds the .gitignore (for example /TODO matches only the top level). A “/” at the end means the rule applies to folders only.

### How should a commit message look?

Conventional Commits 1.0.0 asks for “type(scope)!: description” on the first line, then a blank line, an optional body and footers. A breaking change is marked with “!” or a “BREAKING CHANGE:” footer.

### How long should the subject be?

About 50 characters is the guide. Over 72 characters, logs and review screens tend to wrap it. This is a common convention, not a rule of git.

### Where do the .gitignore templates come from?

They are edited excerpts of github/gitignore (CC0 1.0). The source is written at the top of the generated file.
