Skip to main content

A terminal TUI application for managing Git branches

Project description

gittwig

A terminal user interface (TUI) for viewing and switching git branches, built with Python and Textual.

I built this because I wanted a quick way to view git branches and switch between them. Vibe-coded with Claude Code.

This provides a fast, easy way to browse branches, see the commit history for a given branch, identify files changed in a branch, and view file diffs with syntax highlighting. As an open source developer who works with many branches across multiple projects, this is very helpful for figuring out where I left off and juggling multiple branches.

Screenshot

Features

  • Browse local and remote branches in a navigable list
  • View changed files compared to your default branch
  • View commit history unique to each branch
  • Syntax-highlighted diff viewer
  • Checkout branches with Enter
  • Create and delete branches
  • Fetch, push, and pull operations
  • Filter branches with / search
  • Vim-style keyboard navigation

Installation

Requires Python 3.12 or later.

Install uv and run:

uv tool install gittwig

To run with uv without installing:

uv tool run --from gittwig twig

Usage

Run twig in any git repository:

twig

Or specify a repository path:

twig /path/to/repo

Keyboard Shortcuts

Navigation

Key Action
j / k Move cursor down / up
h / l Focus left / right pane
g g Go to top of list
G Go to bottom of list
Ctrl+d / Ctrl+u Page down / up
Enter Select item / checkout branch

Branch Operations

Key Action
n Create new branch
d Delete branch (with confirmation)
r Refresh data
f Fetch from remotes
p Push current branch
P Pull current branch

Other

Key Action
/ Search/filter branches
? Show help
q Quit
Escape Close modal / cancel

Development

# Install development dependencies
uv sync --group dev

# Run tests
pytest

# Run linter
ruff check .

# Run type checker
mypy src

License

MIT License - see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gittwig-0.2.3.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gittwig-0.2.3-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

Details for the file gittwig-0.2.3.tar.gz.

File metadata

  • Download URL: gittwig-0.2.3.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.2

File hashes

Hashes for gittwig-0.2.3.tar.gz
Algorithm Hash digest
SHA256 cbe3e011612f51e1b72a2851850619f67ab1df8edfaeb54c7ceee44d985efffa
MD5 a347a818944c6c03d05e6ceede9847e8
BLAKE2b-256 af9bcd1cd3bfd30167508391fc00aaa05ec32c9b26f95be392f992e89a642a1f

See more details on using hashes here.

File details

Details for the file gittwig-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: gittwig-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 23.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.2

File hashes

Hashes for gittwig-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f88b6e9d9316a37be5e7af6630aeac7f1e5fd3a353f4c6d3f534f929d447bfdf
MD5 1ef813a8a73eed33e4c9e54a154606a6
BLAKE2b-256 ac7f85a041caf6917536616c3612a6de692799c812e50fba394b7b01a4a45ff6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page