git-recall is your personal standup assistant. Built in pure C with zero dependencies, it provides a lightning-fast summary of what you and your team have accomplished over any timeframe.
Installation • Usage • Troubleshooting • Errors • License
- Zero Dependencies: No Python, Node.js, or heavy runtimes. Just
gitand a C compiler. - Flexible Scopes: Quickly pivot between daily, weekly, monthly, or yearly summaries.
- Multipliers: Look back any number of days, weeks, months, or years with simple flags.
- Just Your Work:
--meshows only your own commits. - Native File Export: Built-in support for logging summaries to text files.
- Blazing Fast: Written in C for near-instant execution even in massive monorepos.
winget install Ammaar.git-recallsudo add-apt-repository ppa:ammaar-apt/git-recall
sudo apt update && sudo apt install git-recallPerfect for macOS or other Linux distros.
git clone https://github.com/AmmaarBakshi/git-recall
cd git-recall
make
sudo make installThe basic syntax is git recall [range] [multiplier] [--me].
| Command | Description |
|---|---|
git recall |
Defaults to the last 7 days (same as --week) |
git recall --day |
Yesterday and today — handy for a morning standup |
git recall --week |
Summary of the last week |
git recall --month |
Summary of the last month |
git recall --year |
The "Year in Review" view |
Every range starts at midnight of its first day, so nothing from that morning is missed. Commits from all branches are included (merge commits are skipped), grouped by day with the newest first, and shown in your local time — even when teammates commit from other timezones.
Need to see the last 3 days or 2 months? Just add the number:
git recall --day -3 # Last 3 days
git recall --month -2 # Last 2 monthsMonths and years are calendar-aware: on March 31, --month starts from February 28 (or 29), not March 3. Ranges that would reach before 1970 start at 1970-01-01.
Add --me to filter by your git config user.email — perfect for standups:
git recall --week --megit recall --help prints all options. Colors are turned off automatically when the output is piped (e.g. git recall | less) or when the NO_COLOR environment variable is set.
# Write to a file (creates it, or overwrites it if it exists)
git recall --month > recall.txt
# Let git-recall create the file itself and confirm where it wrote
git recall --month '>' -mk recall.txtNote the quotes in the second example: an unquoted > is taken by your shell (bash, zsh, PowerShell, cmd), which would write to a file literally named -mk. Quoting it passes > to git-recall instead. Files are always written as plain text without color codes, and git-recall exits with an error if the write fails (for example, a full disk).
──────────────────────────────────────────────────────
git recall — Last Week (since 2026-09-21)
──────────────────────────────────────────────────────
2026-09-27
3ed66e2 Speed up output: buffer the report and skip signature checks @ 23:31 AMMAAR-IC
989b18d Stop repeating day headers after rebases and cross-timezone commits @ 23:30 AMMAAR-IC
1da5ea1 Report write failures instead of claiming success @ 23:29 AMMAAR-IC
2026-09-25
35f1368 Add --me flag to show only your own commits @ 23:39 AMMAAR-IC
──────────────────────────────────────────────────────
Total commits: 4
──────────────────────────────────────────────────────
- Safer output: Commit messages can no longer inject terminal escape codes (colors, window titles). Control characters are shown as
?. - No missed commits: Ranges now start at midnight of the first day. Before, commits from early that morning could be left out.
- Cleaner grouping: Each day appears once, even after rebases or cherry-picks, and all times are in your local timezone.
- Better on Windows: Colors work in the classic console, and your console's code page is put back when git-recall exits.
- Honest exit codes: A failed write (full disk, closed pipe) now exits with an error instead of reporting success.
- Faster: Output is written in large blocks, and GPG signatures are no longer checked for every commit.
See the full release notes.
Since 1.6.0, git-recall switches the console to UTF-8 while it runs and restores your original code page when it exits. It also turns on ANSI color support in the classic Windows console, so you shouldn't see raw codes like ←[1;32m any more. If a console can't show colors, git-recall prints plain text instead.
If you still see garbled characters like ΓöÇ instead of smooth lines ─, it's usually when the output goes through PowerShell, e.g. git recall | Out-File log.txt or $x = git recall. That means PowerShell itself isn't reading the output as UTF-8.
The Permanent Fix:
- Open your profile:
notepad $PROFILE - Paste:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 - Restart PowerShell.
Tip
For the best experience, use Windows Terminal. It handles Unicode natively without any extra configuration.
| Message | Solution |
|---|---|
Not a git repository... |
Run the command inside a folder initialized with git init. |
Unknown option: --xyz |
Check git recall --help for valid flags. |
Invalid multiplier '-x' |
Use a whole number from -1 to -10000. |
--me needs git user.email |
Run git config --global user.email you@example.com. |
Expected filename after '>' |
Ensure you provide a path (e.g., > report.txt). |
Expected filename after '-mk' |
Put a path after -mk (e.g., '>' -mk report.txt). |
Cannot open file 'x' |
Check folder permissions or if the file is locked by another app. |
Unknown option: report.txt |
Your shell took an unquoted >. Quote it: '>' -mk report.txt. |
git log failed. |
git printed the real reason just above — often a corrupt or unreadable repository. |
Failed to write output. / Failed to write the output file. |
The disk is full, or the pipe/terminal was closed before git-recall finished. |
Distributed under the MIT License. See LICENSE for more information.
Created by AmmaarBakshi • Releases • Report an issue