A git commit summary is the fastest way to prepare for standup. Instead of relying on memory, pull yesterday's commits with a single command and use them as talking points. You can do this with a shell alias, an open-source tool like git-standup, or an IDE plugin that generates the summary automatically. Each approach has trade-offs in setup effort, coverage, and how much non-coding work it captures.
Why This Matters
The "what did I do yesterday" question at standup is deceptively hard to answer well. You know you worked a full day, but the specifics blur together. Was the API refactor Monday or Tuesday? Did you finish the tests or just start them? Which PR did you review? Under time pressure, most developers default to a vague summary that undersells their work and gives the team no useful signal.
A git commit summary fixes this by giving you an exact list of what you shipped. The commit messages are already written in your own words, in the order they happened. Reading them takes five seconds. Translating them into a standup update takes another ten. The total prep time drops from "two minutes of anxious memory reconstruction" to "fifteen seconds of reading a list."
The question is not whether to use git for standup prep, but which tool or approach fits your workflow best. This article compares the options from simplest to most comprehensive.
Short Answer
For most developers, a shell alias that runs git log --since="yesterday" --author="$(git config user.name)" --format="- %s" --reverse is the best starting point. It requires zero dependencies, works in any repo, and takes 30 seconds to set up. If you work across multiple repos, use a wrapper script or install git-standup. If you need time data and non-commit activity, use an IDE plugin like CodeClocker that generates the summary from continuous session tracking.
Step-by-Step
1. The Shell Alias Approach (Simplest)
Add this to your ~/.zshrc or ~/.bashrc:
# Simple git commit summary for standup
alias standup='git log --since="yesterday" --author="$(git config user.name)" \
--format="- %s" --reverse --all'
# Monday-aware version
standup() {
local since="yesterday"
[ "$(date +%u)" -eq 1 ] && since="last friday"
git log --since="$since" --author="$(git config user.name)" \
--format="- %s" --reverse --all
}
Run it before standup:
$ standup
- Add rate limiting middleware for public API endpoints
- Write integration tests for rate limiter with Redis backend
- Fix off-by-one error in sliding window counter
- Update API documentation with rate limit headers
Four commits, four bullet points. Your standup update writes itself: "Yesterday I implemented rate limiting for the public API, including Redis-backed sliding window counters. Wrote integration tests and updated the docs."
Pros: Zero dependencies, instant setup, works offline, easy to customize.
Cons: Single repo only, no time data, misses non-commit work.
2. The Multi-Repo Script (For Polyglot Developers)
If you touch two or more repos in a typical day, wrap the query in a loop.
#!/bin/bash
# Save as ~/bin/standup and chmod +x
AUTHOR="$(git config user.name)"
[ "$(date +%u)" -eq 1 ] && SINCE="last friday" || SINCE="yesterday"
for repo in ~/projects/*/; do
[ -d "$repo/.git" ] || continue
commits=$(git -C "$repo" log --since="$SINCE" --author="$AUTHOR" \
--format="- %s" --reverse --all 2>/dev/null)
[ -z "$commits" ] && continue
echo "**$(basename "$repo"):**"
echo "$commits"
echo ""
done
Output:
**api-gateway:**
- Add rate limiting middleware for public API endpoints
- Write integration tests for rate limiter with Redis backend
**billing-service:**
- Fix invoice generation for multi-currency accounts
- Add VAT calculation for EU customers
Pros: Covers all repos, groups by project, still zero dependencies.
Cons: Needs a consistent project directory structure, no time data.
3. Open-Source Tools (git-standup and Alternatives)
Several open-source tools package the git-log-for-standup pattern into installable utilities with extra features.
git-standup is the most popular. Install it via npm or brew:
# Install
npm install -g git-standup
# or
brew install git-standup
# Run in any repo
git standup
# Run for a specific author across multiple days
git standup -a "Your Name" -d 3
git-standup adds colored output, multi-day ranges, team-wide summaries (showing all authors), and automatic Monday detection. It scans subdirectories, so you can run it from a parent folder to cover multiple repos.
Other tools worth considering:
- git-quick-stats provides broader analytics beyond standup: contribution counts, commit timelines, and author rankings. Useful if you want periodic team reports in addition to daily summaries.
- gitlog (various implementations on GitHub) offers JSON output for piping into other tools, Slack bots, or dashboards.
- Custom GitHub Actions or GitLab CI jobs that run a log query on a schedule and post to Slack. Good for teams that want standup automation without each developer installing a local tool.
Pros: Polished output, multi-repo scanning, team summaries, active community.
Cons: Adds a dependency, still git-only (no time or non-commit data).
4. IDE-Based Activity Tracking (Most Complete)
Every tool above shares the same limitation: they only see commits. The work that happens between commits, reading code, debugging, reviewing PRs, attending meetings, is invisible. For a senior developer, this invisible work can represent 30 to 50 percent of the day.
IDE plugins like CodeClocker take a different approach. Instead of querying git history after the fact, they track your development session in real-time:
- Active coding time per project, file, and branch
- Commit linkage connecting sessions to the commits they produced
- Idle detection so breaks and meetings are not counted as coding
- Daily digest automatically generated and available before standup
The daily summary you see in the morning includes both the commit list and the time context: "3.5 hours active on api-gateway (4 commits), 1.8 hours on billing-service (2 commits), 0.5 hours on shared-libs (no commits, read-only session)." That last entry, the 30-minute read-only session where you reviewed code without committing, would be completely invisible to any git-based tool.
Pros: Full activity coverage, time data included, zero manual effort, works across projects automatically.
Cons: Requires IDE plugin installation, only captures IDE activity (not browser-based code reviews or meetings).
Example
Here is a side-by-side comparison of what each approach produces for the same developer on the same day.
Developer: Priya, backend engineer. Worked on Tuesday from 9 AM to 5:30 PM.
Shell alias output:
- Implement webhook event deduplication
- Add database index for webhook event lookups
- Fix retry timing for failed webhook deliveries
git-standup output:
a]3f2d1 - Implement webhook event deduplication (18 hours ago)
b]7e4a9 - Add database index for webhook event lookups (16 hours ago)
c]1d8f3 - Fix retry timing for failed webhook deliveries (14 hours ago)
IDE tracker daily digest:
Tuesday, April 22 - 6.2 hours active
payment-service (4.1h active, 3 commits):
- Implement webhook event deduplication
- Add database index for webhook event lookups
- Fix retry timing for failed webhook deliveries
shared-libs (1.2h active, 0 commits):
- Reviewed and tested HTTP retry client changes (read-only)
catalog-service (0.9h active, 0 commits):
- Debugging session: investigated slow query in product search
What Priya actually did that day:
- Morning: 2 hours coding the webhook deduplication feature, including a database migration (2 commits)
- Late morning: 1.5 hours reviewing a teammate's PR on the HTTP retry client in shared-libs, running the test suite locally, and leaving detailed comments
- After lunch: 1 hour debugging a slow query reported by the catalog team. Found the issue (missing index), but the catalog team will fix it themselves. No commit on Priya's side
- Afternoon: 1.7 hours fixing the webhook retry timing and writing the regression test (1 commit)
- End of day: 30 minutes in sprint planning for next week
The shell alias captured 3 out of 5 activities. git-standup captured the same 3 with timestamps. The IDE tracker captured 4 out of 5, missing only the sprint planning meeting which happened outside the IDE. The full picture required Priya to add one line about planning, rather than reconstruct the entire day from memory.
Common Mistakes
1. Using the summary as the standup update verbatim. A git commit summary is raw material, not a finished update. "Implement webhook event deduplication" is a commit message for code reviewers. "I built the webhook deduplication to prevent duplicate payment notifications" is a standup update for the team. Translate technical details into context your audience cares about.
2. Forgetting --all and missing feature branch commits. Without --all, git log only shows commits reachable from the current HEAD. If you worked on a feature branch and switched back to main before running the command, your day's work will not appear. Always include --all or explicitly name the branches you worked on.
3. Not handling the Monday edge case. Every git standup script needs to check the day of the week. On Monday, --since="yesterday" means Sunday. Your Friday work vanishes. Check for $(date +%u) -eq 1 and fall back to --since="last friday".
4. Relying on git alone for teams with pair programming. When two developers pair, only one name goes on the commits. The other developer has a blank git log for that session. If your team pairs frequently, establish a convention of using Co-authored-by: trailers, or supplement git with session-based tracking that records both participants.
5. Choosing a complex tool when a simple one will do. If you work in one repo and commit regularly with clear messages, you do not need git-standup, a custom Slack bot, or an IDE plugin. A shell alias is enough. Match the tool to the complexity of your workflow. Add layers only when the simpler approach fails to capture enough of your work.
FAQ
Which approach should I start with?
Start with the shell alias. It takes 30 seconds to add to your config and covers the core use case. If after a week you find it is missing work because you use multiple repos, upgrade to the multi-repo script or git-standup. If you find it is missing significant non-coding contributions, add IDE tracking.
Can I combine multiple approaches?
Yes, and many developers do. A common setup is git-standup for the commit list plus an IDE tracker for time data. The commit list tells you what you did, the time data tells you how your day was distributed. Together they cover both the "what" and the "how long" questions that come up in standup and sprint planning.
How do I get my team to adopt this?
Share the shell alias in your team's Slack channel with a screenshot of the output. Most developers adopt it immediately because the value is obvious and the setup cost is zero. For team-wide adoption of a more structured tool, start with a two-week trial and compare the quality of standup updates before and after.
What if my commit messages are poor?
A git commit summary is only as good as the commit messages. If your messages say "fix," "wip," or "update stuff," the summary will be useless. This is actually a benefit of the approach: it creates a natural incentive to write better commit messages, because you will be reading them aloud to your team every morning. Enforce a format like <verb> <what changed> (e.g., "Add pagination to search endpoint") and your standup prep becomes effortless.
Does this work for async standups?
Perfectly. Async standups in Slack or Teams are even better suited to git-based summaries because you can copy-paste the output directly into the message. Add a cron job that posts the summary to your standup channel at a set time, and the "yesterday" section of your async update is fully automated.
Final Recommendation
Use a git commit summary as the foundation of every standup update. It is faster than memory, more accurate than memory, and requires no ongoing effort once set up. Start with the shell alias for a single repo. Move to a multi-repo script or git-standup if your workflow spans multiple codebases. Add IDE-based tracking if you need time data or if a significant portion of your work does not produce commits.
The right level of tooling depends on your context. A solo developer billing one client needs the alias and nothing more. A developer on a ten-person team with sprint reviews, client invoicing, and compliance requirements benefits from the full stack: git summary for the commit list, IDE tracking for the time data, and a two-minute manual review to add meetings and blockers. In every case, the principle is the same: let the tools remember so you can focus on communicating.
Related Reading
- How to Turn Git Commits into a Daily Standup Summary
- Auto-Generate a Standup Report from Git History
- How to Create a Weekly Report from Git Commits
- Automating Developer Timesheets: Why Manual Time Entry Fails
Get your standup summary generated from actual coding activity
CodeClocker tracks your development sessions in real-time, links them to commits and branches, and produces daily digests with time data. Standup prep in seconds, not minutes.
Start Free Trial