Interactive CLI tool for building .gitignore files
gno (pronounced "noh") helps you create .gitignore files interactively with a beautiful split-pane TUI interface. It fetches templates from GitHub's official gitignore repository and caches them locally for fast access.
- Interactive TUI - Split-pane interface with live preview
- 230+ Templates - All templates from GitHub's gitignore repository
- Smart Search - Filter templates by name or description
- Smart Merging - Append to existing files without duplicates
- Offline Support - Templates cached locally after first fetch
- Multiple Output Modes - Interactive, generate, preview
# Using uv (recommended)
uv tool install gno
# Or run directly without installing
uvx gno
# Using pipx
pipx install gno
# Using pip
pip install gnoLaunch the TUI by running gno without arguments:
gnoControls:
Up/Downorj/k- Navigate templatesSpace- Toggle selection/- Search templatess- Save and exit?- Show helpq- Quit
# Generate .gitignore from templates
gno generate python node
# Preview without saving
gno generate python --preview
# Save to custom path
gno generate rust -o backend/.gitignore
# Append to existing file (smart merge)
gno generate go --append
# List all templates
gno list
# Search templates
gno list python
# Show template content
gno show python
# Update template cache
gno updategno generate pythongno generate python nodegno generate terraform --appendTemplates are fetched from:
- github/gitignore - Root directory (language templates)
- github/gitignore/Global - Global templates (editors, OS, etc.)
- github/gitignore/community - Community templates (community-contributed templates)
Templates are cached in ~/.gno/templates.json for offline access and faster startup. Run gno update to refresh the cache.
# Clone the repository
git clone https://github.com/OseSem/gno
cd gno
# Install dependencies
uv sync
# Run the CLI
uv run gno
# Run tests
uv run pytest
# Run linting
uv run ruff check .
uv run black --check .MIT License - see LICENSE for details.