7 releases
Uses new Rust 2024
| 0.1.6 | Oct 4, 2025 |
|---|---|
| 0.1.5 | Sep 30, 2025 |
#392 in Development tools
270 downloads per month
1.5MB
519 lines
git-today
A tool to recap your daily git work.
Motivation
In my optinion, projects which solve a problem firstly to use, are the most valueable. So the idea for this project was born while I was writing my bachelor thesis:
working all day in a project which gets bigger and bigger, the commits are piling up (big fan of commiting small chunks when working with LaTeX) and at the end of the day I had no idea how much I worked and how. Pretty early in the process I commited to "mark" my commits with little tags inside the message (not like git tag) to get a quick overview what this commit is about.
So I said to myself, why not analyze the commit history of today and print nice little statistics.
Installation
Currently no binaries are provided yet, so you can install it with cargo directly
# Use the version on Crates.io
cargo install git-today
# Use the GitHub version
cargo install --git https://github.com/bitSheriff/git-today
# Use my selfhosted version
cargo install --git https://code.bitsheriff.dev/bitSheriff/git-today
or with the AUR
yay -S git-today
Usage
A tool to recap your daily git work
Usage: git-today [OPTIONS] [path]
Arguments:
[path] Path to the git repository [default: .]
Options:
-v, --version Print version information
--full Print commit messages and full table
--author Display authors table
--files Display changed files
--issues Display issues table
--messages Display commit messages
--types Display issue types table
--diff Display line diffs in authors table
--only Display only the selected items
-h, --help Print help
Fine-grained control
You can control which sections are displayed using flags. By default, the authors and issue types tables are shown.
--author: Show the authors table.--files: Show the list of changed files.--issues: Show the issue tickets table.--messages: Show the commit messages.--types: Show the issue types table.--diff: Show line diffs (additions/deletions) in the authors table.
The --only flag allows you to display only the sections you specify. For example, to see only the commit messages and changed files:
git-today --only --messages --files
And this will print a small table which looks like:
╭────────────┬──────────────╮
│ Author ┆ # of Commits │
╞════════════╪══════════════╡
│ bitSheriff ┆ 11 │
╰────────────┴──────────────╯
╭─────────────┬──────────────╮
│ Issue Type ┆ # of Commits │
╞═════════════╪══════════════╡
│ 🐛 Bugs ┆ 1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 🚀 Features ┆ 4 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 📝 Docs ┆ 4 │
╰─────────────┴──────────────╯
The --full option prints commit messages and changed file as well as all available issue types
╭─────────┬──────────────┬──────┬──────┬───────╮
│ Author ┆ # of Commits ┆ Adds ┆ Dels ┆ Files │
╞═════════╪══════════════╪══════╪══════╪═══════╡
│ Author4 ┆ 4 ┆ 4 ┆ 4 ┆ 1 │
├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
│ Author1 ┆ 1 ┆ 1 ┆ 0 ┆ 1 │
├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
│ Author2 ┆ 1 ┆ 1 ┆ 1 ┆ 1 │
├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
│ Author3 ┆ 1 ┆ 1 ┆ 1 ┆ 1 │
╰─────────┴──────────────┴──────┴──────┴───────╯
╭───────────────┬──────────────╮
│ Issue Type ┆ # of Commits │
╞═══════════════╪══════════════╡
│ 🐛 Bugs ┆ 1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 🚀 Features ┆ 5 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ♻️ Refactrors ┆ 0 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 📝 Docs ┆ 1 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 🧬 Merges ┆ 0 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ 🔍 Tests ┆ 0 │
╰───────────────┴──────────────╯
Changed files today:
- dummy.txt
Commit messages today:
- feat: new author
- feat: new author
- feat: new author
- feat: new author
- doc: documented something
- bug: fixed something
- feat: init repo
╭──────────────┬──────────────╮
│ Issue Ticket ┆ # of Commits │
╞══════════════╪══════════════╡
│ issue-1 ┆ 5 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ issue-a ┆ 4 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ issue-123 ┆ 1 │
╰──────────────┴──────────────╯
To use this tool with git today, you can create a git alias.
Set the alias in the current repository:
git config alias.today "!git-today"
Set the alias globally for your user:
git config --global alias.today "!git-today"
Dependencies
~16MB
~318K SLoC