CLI reference

Excluding files

Blamely skips files that match patterns in ~/.blamely/exclude. A matched file is completely invisible to attribution — it never appears in blamely report, blamely stats, or the editor plugin.

The exclude file

~/.blamely/exclude

Created automatically on first install with sensible defaults. Edit it freely — Blamely reads it on every commit and never overwrites it once it exists. Changes take effect immediately (no daemon restart needed).

Pattern syntax

The file uses a subset of .gitignore syntax.

Pattern formMatches
nameAny path component equal to name. node_modules matches app/node_modules/foo.js.
name/Same as name — trailing slash is cosmetic.
*.extBasename glob via filepath.Match. *.class matches pkg/Foo.class.
/nameAnchored at repo root. /dist matches dist/ but not app/dist/.
/name/Same as /name (anchored directory).
foo/barNon-anchored slash path. Matches foo/bar anywhere in the path.
# commentIgnored.
(blank line)Ignored.

Negation is not supported

There is no !pattern: lines starting with ! are silently dropped.

Default exclusions

The file Blamely writes on first install excludes the most common build outputs, dependency trees, caches, and binary files. A few examples:

# Build outputs
target/
build/
dist/
.next/

# Dependencies
node_modules/
vendor/
.venv/

# Lockfiles (generated, not hand-written)
package-lock.json
yarn.lock
go.sum
Cargo.lock

# Compiled artifacts
*.class
*.pyc
*.o

# Minified assets
*.min.js
*.min.css
*.map

The full default list covers Java, Python, Go, Rust, Ruby, PHP, Node.js, Swift, and C/C++ projects out of the box. Inspect the current file:

terminal
cat ~/.blamely/exclude

gitignore integration

Blamely automatically merges the global exclude file with:

  • The repo’s .gitignore (top-level only — sub-directory .gitignore files are not walked).
  • .git/info/exclude (per-repo local exclusions).

Anything your repo’s .gitignore would hide from a fresh clone is also hidden from Blamely’s attribution. You don’t need to duplicate those patterns.

Per-repo opt-out

To stop attributing a single repo entirely, set its local core.hooksPath to empty:

terminal
git config core.hooksPath ""

The global hook is bypassed for that repo. Undo it:

terminal
git config --unset core.hooksPath

Adding project-specific patterns

Append patterns directly to ~/.blamely/exclude:

terminal
echo "generated/" >> ~/.blamely/exclude
echo "*.pb.go" >> ~/.blamely/exclude
echo "/migrations" >> ~/.blamely/exclude

The next commit picks them up automatically.

Next

Something unclear or wrong? Tell us.