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
xto mark start/end and diff any two commits,Xto snap nearest pin - Syntax-highlighted diffs with inline, whole-file, and side-by-side views
- Diff search (
/) — regex search within the diff withn/pto 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
gvtto youris_vimregex) - 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)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
960505dcfacec47bb1c9aea2d973b969b4e749998e38b8836b6b43d7459cd531
|
|
| MD5 |
96922ad315897cb2ceca11e8eef57c00
|
|
| BLAKE2b-256 |
dbcfc1e071aac369494fe08715bab0648c49220e8d79e300376d3b8046a502b1
|
File details
Details for the file git_visual_timeline-0.2.0-py3-none-any.whl.
File metadata
- Download URL: git_visual_timeline-0.2.0-py3-none-any.whl
- Upload date:
- Size: 39.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffd5646bb27dc6cf8dd40d336186e58d07800ea81406262008586d5b8ff800b5
|
|
| MD5 |
a4d200080937de0025fefc5c9d365ee3
|
|
| BLAKE2b-256 |
91575cdb2f5d26578a7f5cb167ae4f8741a15a2cd3875242493800c96f2a56c8
|