Skip to main content

Simple terminal tool of Git.

Project description

PIGIT

Python 3 pypi_version Code style: black

A terminal UI for Git, plus short command aliases and multi-repo management. Run pigit with no arguments to launch the TUI, or use sub-commands for quick one-off tasks.

interaction demo

Quick Start

pip install -U pigit
pigit          # Launch TUI

Installation

Pip

pip install -U pigit

Source

git clone https://github.com/zlj-zz/pigit.git --depth=1
cd pigit
make install
# or on Windows
python setup.py install

Development (editable install)

pip install -e ".[dev]"

TUI Mode

Pigit's primary interface is a terminal UI. Simply run pigit with no arguments to enter it.

The TUI provides interactive panels for status, branch list, commit log, diff viewer, and more. Use j/k or arrow keys to navigate, Enter to select, and q or Esc to go back. Press ? or h at any time to see available key bindings.

For operations that are cumbersome on the command line—such as staging individual hunks, browsing commit history with inline graphs, or resolving merge conflicts—the TUI is the recommended workflow.

[!NOTE] The TUI requires an interactive terminal (both stdin and stdout must be TTYs). It will not launch in CI pipelines, scripts, or when piped.

CLI Usage

For scripting, CI, or quick tasks, Pigit exposes sub-commands and flags.

usage: pigit [-h] [-i] [-f] [-r] [-v] [-c [PATH]] [--create-ignore TYPE]
             [--init [SHELL]] [--create-config]
             {cmd,repo,open} ...

Pigit TUI is called automatically if no parameters are followed.

cmd

Short aliases for common git operations.

demo display

Discovery

  • pigit cmd -l — list all short commands with help text and underlying git lines.
  • pigit cmd -s <query> / --search <query> — filter by keyword.
  • pigit cmd -t <category> — filter by category (branch, commit, index, etc.).
  • pigit cmd -p / --pick — interactive picker (TTY only): j/k to move, Enter to run, / to filter, q to quit.

Example output from pigit cmd -l:

These are short commands that can replace git operations:
    b        lists, creates, renames, and deletes branches.
             git branch
    bc       creates a new branch.
             git checkout -b
    bl       lists branches and their commits.
             git branch -vv
    bd       delete a local branch by name.
             git branch -d
......

repo

Manage multiple repositories at once.

demo display demo display demo display

  • pigit repo add <path> — add repo(s) to the managed list.
  • pigit repo rm <name> — remove repo(s).
  • pigit repo ll — display summary of all repos.
  • pigit repo cd <name> — print the path of a managed repo.
  • pigit repo cd -p — open the interactive picker to choose a repo.
  • pigit repo fetch|pull|push [<name>...] — run git operations across repos in parallel.

open

Open the current repository's remote URL in a web browser.

pigit open              # open current branch
pigit open <branch>     # open specific branch
pigit open -c           # open at current commit
pigit open -i <number>  # open a specific issue
pigit open -p           # print URL instead of opening

Other flags

flag description
-i, --information show repository info
-f, --config display local git config
-r, --report show pigit description
-c [PATH], --count [PATH] code statistics (table or simple format)
--create-ignore TYPE generate a .gitignore template
--create-config create a config file at ~/.config/pigit/pigit.toml

Shell Integration

pigit --init generates shell completion scripts and a pigit wrapper function.

[!TIP] Run --init once: it sets up both tab-completion and the repo cd auto-cd wrapper. You do not need a separate completion-only step.

Add it to your shell configuration:

# ~/.bashrc or ~/.zshrc
eval "$(pigit --init)"

Supports bash, zsh, and fish. If no shell is specified, it auto-detects from $SHELL.

Auto cd with repo cd

After sourcing the init script, pigit repo cd -p automatically changes your shell's working directory when you pick a repo. The wrapper intercepts pigit repo cd, runs the picker, and cds into the selected path.

For scripts and CI, use --output-file <path> to write the selected directory to a file instead.

Alias

Add to your shell profile for faster access:

if type pigit >/dev/null 2>&1; then
    alias pg="pigit"
    alias gr="pigit repo"
fi

Windows (PowerShell)

set-alias pg pigit

Configuration

Create a template config with pigit --create-config. The config lives at:

  • Linux/macOS: ~/.config/pigit/pigit.toml
  • Windows: %USERPROFILE%\pigit\pigit.toml

See examples/pigit.toml for a full template.

section key type default description
[cmd] display bool True show original git command
[cmd] recommend bool True suggest corrections for wrong commands
[counter] use_gitignore bool True respect .gitignore when counting
[counter] show_invalid bool False show files that cannot be counted
[counter] show_icon bool True show file icons (requires Nerd Font)
[counter] format str table output format: table or simple
[info] git_config_format str table git config display: table or normal
[info] repo_include list ["remote", "branch", "log"] sections to show in repo info
[repo] auto_append bool True auto-add current repo to managed list
[log] debug bool False debug mode
[log] output bool False print logs to terminal

Custom Commands

Define aliases and scripts in pigit.cmds.toml inside the pigit home directory.

Aliases

[cmd_new.aliases]
mybl = "bl"
mylog = "log --oneline --graph"

Scripts

[cmd_new.scripts.myscript]
steps = ["status", "log --oneline"]
help = "Show status then log"
category = "script"

# concise form for simple step lists
[cmd_new.scripts]
quick-check = ["status", "diff --cached"]

User-defined entries appear in pigit cmd -l, search, and --pick with [alias] or [script] prefixes.

Features

  • TUI-first workflow — interactive panels for status, branch, commit log, diff, and more.
  • Short commands — aliases like pigit cmd st for git status --short.
  • Command correction — suggests the right command when you typo.
  • Multi-repo managementrepo sub-commands for bulk operations across projects.
  • Shell completion — bash/zsh/fish with pigit --init.
  • Auto cd — shell wrapper enables pigit repo cd -p to change directory after picking.
  • Code statistics — count lines/files by type with table or simple output.
  • .gitignore templates — generate from common types.
  • Quick open remote — open repo/commit/issue in browser.
  • Custom aliases & scripts — extend via TOML config.

LICENSE: MIT

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

pigit-1.8.13.tar.gz (315.7 kB view details)

Uploaded Source

Built Distribution

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

pigit-1.8.13-py3-none-any.whl (399.6 kB view details)

Uploaded Python 3

File details

Details for the file pigit-1.8.13.tar.gz.

File metadata

  • Download URL: pigit-1.8.13.tar.gz
  • Upload date:
  • Size: 315.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pigit-1.8.13.tar.gz
Algorithm Hash digest
SHA256 5bb0e89d0a0d77e98f79e3a6ec008a13a16bc76b90071e7589cf1e1dd27eea23
MD5 f539d52d6c67968f63e8b63542efe73d
BLAKE2b-256 48302c342b7ed971824504ed5db4105f36195949b79398910e007cf05f37a172

See more details on using hashes here.

Provenance

The following attestation bundles were made for pigit-1.8.13.tar.gz:

Publisher: ci.yaml on zlj-zz/pigit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pigit-1.8.13-py3-none-any.whl.

File metadata

  • Download URL: pigit-1.8.13-py3-none-any.whl
  • Upload date:
  • Size: 399.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pigit-1.8.13-py3-none-any.whl
Algorithm Hash digest
SHA256 95877c5a8db0c6390e21c01d20373dd5cfbba17bff5acdf4d552b4035b030da4
MD5 1cfaee9513e30c937a8d46092280bb4b
BLAKE2b-256 daf1e0dabc12746f6907b18e15c77ff58d120dc8a35ef763b9071c868c528627

See more details on using hashes here.

Provenance

The following attestation bundles were made for pigit-1.8.13-py3-none-any.whl:

Publisher: ci.yaml on zlj-zz/pigit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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