Skip to main content

Git Visual Timeline — a keyboard-driven TUI for exploring file commit history

Project description

gvt — Git Visual Timeline

A keyboard-driven TUI for exploring the commit history of any file in a git repo. Think lazygit meets a video timeline scrubber, focused on per-file history.

Install

pip install git-visual-timeline

Usage

# Open in any git repo
gvt

# Jump directly to a file
gvt path/to/file.py

Features

  • Visual timeline with heatmap-colored ticks (green=adds, red=deletes, amber=mixed)
  • Step-through mode — scrub one commit at a time to see what changed
  • Pin mode — press x to mark start/end and diff any two commits, X to snap nearest pin
  • Syntax-highlighted diffs with inline, whole-file, and side-by-side views
  • Diff search (/) — regex search within the diff with n/p to navigate matches
  • Commit search (c) — fuzzy search all repo commits by message, branch name, or author, then drill into changed files
  • File search (f) — fzf-style file picker
  • Time filter (t) — filter timeline by date range (1w, 1m, 3m, 6m, 1y, custom date)
  • Inline blame (b) — right-aligned blame annotations
  • Contributor breakdown (B) — visual bar chart of who changed the file
  • WIP indicator — hollow tick showing uncommitted changes on the timeline
  • Changed files pane — see all files touched by the current commit, select to navigate
  • Side-by-side diff (d) — toggle between inline and side-by-side diff views
  • Copy to clipboard (y/Y) — copy short or full commit hash
  • Open in editor (e) — open current file in $VISUAL/$EDITOR/vim
  • Remember last file — reopens to the last file you were viewing per repo
  • 5-pane layout with numbered switching (1-5) and Ctrl+hjkl navigation
  • tmux integration — seamless pane switching at edges (add gvt to your is_vim regex)
  • Lazy file tree — loads directories on demand for large repos
  • Preloaded diffs — adjacent commits pre-cached for instant navigation
  • Context-sensitive status bar showing relevant shortcuts per pane
  • Untracked files — shown in a separate section, viewable as read-only preview

Keybindings

Global

Key Action
1-5 Jump to pane
Ctrl+h/j/k/l Navigate panes directionally
c Search commits (all repo)
f / Ctrl+P Search files
t Time filter
w Toggle whole-file view
d Toggle side-by-side diff
b Toggle inline blame
B Contributor breakdown
/ Search in diff
n/p Next/prev diff hunk
y / Y Copy short/full commit hash
e Open file in editor
? Help
q Quit (with confirmation)
qq Quit immediately

Timeline (Pane 2)

Key Action
h/l Move cursor
0/$ Jump to first/last commit
x Pin commit (1st=start, 2nd=end, 3rd=clear)
X Snap nearest pin to cursor

Diff (Pane 4)

Key Action
j/k Scroll
g/G Top/bottom
+/- or m/l More/less context lines
Shift+Left/Right Horizontal scroll

Search Modals

Key Action
Tab / Shift+Tab Navigate results
Ctrl+n / Ctrl+p Navigate results (alternative)
Enter Select
Esc Close

Requirements

  • Python 3.10+
  • A git repository

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

git_visual_timeline-0.2.0.tar.gz (41.9 kB view details)

Uploaded Source

Built Distribution

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

git_visual_timeline-0.2.0-py3-none-any.whl (39.3 kB view details)

Uploaded Python 3

File details

Details for the file git_visual_timeline-0.2.0.tar.gz.

File metadata

  • Download URL: git_visual_timeline-0.2.0.tar.gz
  • Upload date:
  • Size: 41.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for git_visual_timeline-0.2.0.tar.gz
Algorithm Hash digest
SHA256 960505dcfacec47bb1c9aea2d973b969b4e749998e38b8836b6b43d7459cd531
MD5 96922ad315897cb2ceca11e8eef57c00
BLAKE2b-256 dbcfc1e071aac369494fe08715bab0648c49220e8d79e300376d3b8046a502b1

See more details on using hashes here.

File details

Details for the file git_visual_timeline-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for git_visual_timeline-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ffd5646bb27dc6cf8dd40d336186e58d07800ea81406262008586d5b8ff800b5
MD5 a4d200080937de0025fefc5c9d365ee3
BLAKE2b-256 91575cdb2f5d26578a7f5cb167ae4f8741a15a2cd3875242493800c96f2a56c8

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