Local CLI tool that concatenates all non-gitignored text files in a repository into a single output, ready for pasting into LLMs.
Inspired by gitingest.com.
Add bin/ to your PATH:
export PATH="$HOME/dev/ideas/gitingest/bin:$PATH"gitingest # current dir, copies to clipboard
gitingest ~/projects/myapp # specific repo
gitingest -i "*.py" -i "*.ts" # only include matching files
gitingest -e "*.test.*" -e "docs/*" # exclude patterns
gitingest -E .json -E .lock # exclude by extension
gitingest -F config.yaml # exclude specific filename at any depth
gitingest -m 100k # override size filter (default: 50k)
gitingest -o output.txt # write to file instead of clipboard
gitingest --stdout # print to stdout
gitingest -s # show file count and size stats
gitingest --show-defaults # list default exclusions
gitingest --no-defaults # include lock files, .DS_Store, etc.Produces a single text blob with:
- Header -- repo name, branch, commit, timestamp
- Directory tree -- ASCII tree of included files
- File contents -- each file wrapped in
===separators
By default, output is copied to the clipboard (pbcopy on macOS) and saved to a temp file.
- Max file size: 50 KB (override with
-m) - Binary files are skipped
- Lock files,
.DS_Store, minified JS/CSS, and sourcemaps are excluded (disable with--no-defaults) .gitignorerules are respected