#git #today #commit #daily #recap

app git-today

A tool to recap your daily git work

7 releases

Uses new Rust 2024

0.1.6 Oct 4, 2025
0.1.5 Sep 30, 2025

#392 in Development tools

Download history 353/week @ 2025-09-06 67/week @ 2025-09-13 115/week @ 2025-09-20 106/week @ 2025-09-27 145/week @ 2025-10-04 14/week @ 2025-10-11 3/week @ 2025-10-18

270 downloads per month

MIT license

1.5MB
519 lines

git-today

license Crates.io

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

Packaging status

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