git-wrapped
Spotify Wrapped, but for your Git history.
git-wrapped analyzes your repository's commit history and generates a beautiful, colorful terminal report — complete with activity heatmaps, coding personality insights, streak tracking, and fun facts about your development habits.
Demo
Features
- The Numbers — Total commits, files changed, lines added/deleted, net impact
- Activity Heatmap — GitHub-style contribution calendar rendered in your terminal
- When You Code — Hour-of-day and day-of-week activity bar charts
- Top Files — Most frequently modified files leaderboard
- Languages — Programming language breakdown with visual bars
- Streaks & Records — Longest streak, current streak, busiest day
- Coder DNA — Fun personality assessment based on your coding patterns (Night Owl, Early Bird, Weekend Warrior, Feature Machine, and more)
- Fun Facts — Holiday commits, longest/shortest commit messages, productivity stats
- JSON Export — Export raw stats for sharing or further analysis
Installation
pip install git-wrapped
Or install from source:
git clone https://github.com/stackmasteraliza/git-wrapped.git
cd git-wrapped
pip install -e .
Usage
Run inside any git repository:
# Analyze the current repo (all time)
git-wrapped
# Analyze a specific year
git-wrapped --year 2025
# Analyze a specific repo
git-wrapped --path ~/projects/my-cool-project
# Filter by author
git-wrapped --author "Jane Doe"
# Disable animations for instant output
git-wrapped --no-animate
# Export as JSON
git-wrapped --json > my-wrapped.json
# Combine options
git-wrapped --path ~/work/api --year 2025 --author "me@email.com" --no-animate
You can also run it as a Python module:
python -m git_wrapped --year 2025
CLI Options
| Flag | Description |
|---|---|
--path, -p |
Path to the git repository (default: .) |
--year, -y |
Year to analyze (default: all time) |
--author, -a |
Filter by author name or email |
--no-animate |
Skip loading animation and section pauses |
--json |
Output raw statistics as JSON |
--version, -v |
Show version number |
Coder Personalities
Based on your commit patterns, git-wrapped assigns you one of these personalities:
| Personality | Trigger |
|---|---|
| Night Owl | 30%+ of commits after 10 PM |
| Early Bird | 45%+ of commits before noon |
| Weekend Warrior | 30%+ of commits on Sat/Sun |
| Streak Master | 14+ day commit streak |
| Feature Machine | 3x more additions than deletions |
| Code Surgeon | Deletions approach additions |
| Balanced Builder | Even mix of all patterns |
Requirements
- Python 3.8+
- Git installed and in PATH
- Terminal with color support (most modern terminals)
Dependencies
rich— Beautiful terminal formatting
That's it! Only one external dependency.
How It Works
- Parses
git logoutput with--numstatfor file-level statistics - Computes time patterns, streaks, language breakdown, and more
- Determines your "coder personality" based on commit patterns
- Renders everything with Rich panels, tables, and styled text
Built With GitHub Copilot CLI
This project was built using GitHub Copilot CLI as part of the GitHub Copilot CLI Challenge on DEV. Copilot CLI assisted with:
- Scaffolding the project structure
- Writing the git log parser and statistics engine
- Designing the Rich-based terminal visualizations
- Debugging edge cases in date/streak calculations
Here are some examples of Copilot CLI in action during development:
License
MIT License — see LICENSE for details.
Metadata
Release files for git-wrapped 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| git_wrapped-1.0.1.tar.gz | 17.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| git_wrapped-1.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.4 kB
Release files / git_wrapped-1.0.1.tar.gz
| Download URL | git_wrapped-1.0.1.tar.gz |
|---|---|
| Size | 17.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ae0b438213d5063e739ae693ff2785d8ba002c42038b455eb996e31a49c8fc9
|
|
BLAKE2b-256 checksum How to use checksums |
fd818fa9c3665effac4f8fd1b2af4e68dc486a2ecdb1c03e248e2de1bdd69885
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|
Release files / git_wrapped-1.0.1-py3-none-any.whl
| Download URL | git_wrapped-1.0.1-py3-none-any.whl |
|---|---|
| Size | 17.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
561b7d1375dd8e8ecd7ff8a8be9ed44f5d0ec3961259ecc8393cbfa3b9e38e5c
|
|
BLAKE2b-256 checksum How to use checksums |
357106ac130bdcfa593b75e66e2c18e92edee1dc5a7497bf4903c2c4a9a5f36c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|