$ gitstats
📊 Generate insightful visual reports from Git.
📘 Documentation: gitstats.readthedocs.io 📊 GitStats Gallery: shenxianpeng.dev/gitstats/gallery/
Example
gitstats . generates this gitstats report.
Check out the GitStats Gallery for live reports on the world’s largest open-source projects — auto-generated weekly.
Installation
pip install gitstats
Or, using uv (recommended):
uv pip install gitstats # install into current environment
uvx gitstats . # run instantly, no install required
gitstats is compatible with Python 3.10 and newer.
Usage
gitstats <gitpath> [<outputpath>]
If <outputpath> is omitted, reports are written to gitstats-report/ by default.
Analyze several repositories at once to get a portfolio overview — useful for seeing how all of a team’s projects are doing in one place:
gitstats repo1 repo2 repo3 <outputpath>
Each repository gets its full report in <outputpath>/<repo>/ along with a machine-readable summary.json, and an aggregate page at <outputpath>/index.html shows a sortable table of every repository — commits, authors, recent activity, lines of code and a health label — linking into the individual reports. Repositories that fail to analyze are listed on the page without stopping the run.
Add --serve to preview the generated report right away — gitstats starts a local web server and prints the URL (bound to 127.0.0.1 by default; pass --host 0.0.0.0 to expose it on your network, --port to pick a port):
gitstats --serve .
Use --verbose to show debug-level command logs, or --quiet to show only warnings and errors:
gitstats --verbose .
gitstats --quiet .
Run gitstats --help for more options, or check the documentation.
GitHub Action
Automate your gitstats report generation with the official GitStats Action.
- uses: shenxianpeng/gitstats-action@v1
with:
deploy-to-pages: true
With just one uses line, the Action generates a full gitstats report and deploys it to GitHub Pages automatically.
See the gitstats-action repository for detailed inputs, examples, and advanced usage (AI-powered reports, custom config, manual deploy, etc.).
What’s New in v2.0.0
v2.0.0 is a major release focused on modernizing the report UI and removing the Gnuplot dependency.
- Terminal-inspired UI redesign
The entire report interface has been redesigned with a terminal / OpenCode-inspired aesthetic: zero border-radius (sharp, angular corners), monospace fonts in headings and navigation, border-heavy layout, and a GitHub-style green heatmap. Both light and dark modes are supported with a one-click toggle — no flash of unstyled content when switching pages.
- Chart.js replaces Gnuplot
All charts are now rendered interactively in the browser using Chart.js. Gnuplot is no longer required. Reports are fully self-contained HTML files.
Features
Here is a list of some features of gitstats:
General: total files, lines, commits, authors, age.
Activity: commits by hour of day, day of week, hour of week, month of year, year and month, and year.
Authors: list of authors (name, commits (%), first commit date, last commit date, age), author of month, author of year.
Files: file count by date, extensions.
Lines: line of code by date.
Tags: tags by date and author.
Customizable: config values through gitstats.conf.
Cross-platform: works on Linux, Windows, and macOS.
AI-Powered Features 🤖
GitStats supports AI-powered insights to enhance your repository analysis with natural language summaries and actionable recommendations.
Quick Start:
# Install with AI support
pip install gitstats[ai]
# Enable AI with OpenAI
export OPENAI_API_KEY=your-api-key
gitstats --ai --ai-provider openai <gitpath> [<outputpath>]
For detailed setup instructions, configuration options, and examples, see the AI Integration Documentation.
Contributing
As an open source project, gitstats welcomes contributions of all forms.
Thanks to all contributors:
The gitstats project was originally created by Heikki Hokkainen and is currently maintained by Xianpeng Shen.
Release files for gitstats 2.6.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gitstats-2.6.3-py3-none-any.whl | Python 3 | none | any | Details |
Release files / gitstats-2.6.3-py3-none-any.whl
| Download URL | gitstats-2.6.3-py3-none-any.whl |
|---|---|
| Size | 142.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc2a1acad8b0b24402ff39a52525910aa1bceddf1816944e3c13d3ad427779b9
|
|
BLAKE2b-256 checksum How to use checksums |
e3645255ecea873463e50cd5fa4e18143f67dc7d3a9a5355bec4db0f16ad7b2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|