DEV Community

Cover image for Your GitHub Graph is Lying About How Much You Work. Here's How I Fixed Mine.
Yuvraj Angad Singh
Yuvraj Angad Singh

Posted on

Your GitHub Graph is Lying About How Much You Work. Here's How I Fixed Mine.

I work 50+ hours a week writing code. My GitHub profile says I'm barely active.

Sound familiar? If you work on private repos — enterprise GitHub, Bitbucket, GitLab, self-hosted — none of that shows on your contribution graph. Recruiters see empty squares. Your profile looks dead.

I got tired of it and built contrib-mirror — a CLI that mirrors your real commit timestamps to a public repo. No code exposed. No fake commits. Just your actual work activity, finally visible.

Install

brew tap yuvrajangadsingh/contrib-mirror
brew install contrib-mirror
Enter fullscreen mode Exit fullscreen mode

Or use the one-liner:

curl -fsSL https://raw.githubusercontent.com/yuvrajangadsingh/private-work-contributions-mirror/main/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

The setup wizard auto-detects your repos, emails, and org:

contrib-mirror --setup   # configure once
contrib-mirror           # sync anytime
Enter fullscreen mode Exit fullscreen mode

How It Works

  1. Discovers repos in your work directory
  2. Creates bare caches (no source code touched)
  3. Extracts commit timestamps matching your email
  4. Optionally pulls PR/review/issue timestamps via GitHub API
  5. Creates empty commits with matching dates in a public mirror repo
  6. Pushes to GitHub

Zero code is ever exposed. The mirror contains only empty commits with timestamps.

It Also Tracks PRs and Reviews

GitHub counts more than commits — PRs opened, reviews submitted, and issues created all count toward your graph. With gh CLI authenticated, contrib-mirror picks those up too.

Set It and Forget It

Add a cron job or launchd agent and it syncs daily at midnight. Your graph stays green without you thinking about it.

The setup wizard handles scheduling too — just pick launchd or cron when prompted.


GitHub logo yuvrajangadsingh / private-work-contributions-mirror

Mirror commit timestamps from private work repos to your GitHub contribution graph—without exposing any code

Private Work Contributions Mirror

Mirror commit timestamps from private work repos to your GitHub contribution graph—without exposing any code.

Before                              After
┌────────────────────────┐          ┌────────────────────────┐
│ ░░░░░░░░░░░░░░░░░░░░░░ │          │ ░█░██░█░░█░██░█░░█░██░ │
│ ░░░░░░░░░░░░░░░░░░░░░░ │    →     │ ░█░██░█░░█░██░█░░█░██░ │
│ ░░░░░░░░░░░░░░░░░░░░░░ │          │ ░█░██░█░░█░██░█░░█░██░ │
└────────────────────────┘          └────────────────────────┘
  Private work invisible              Real activity visible

Install

One-liner (recommended):

curl -fsSL https://raw.githubusercontent.com/yuvrajangadsingh/private-work-contributions-mirror/main/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

Homebrew:

brew tap yuvrajangadsingh/contrib-mirror
brew install contrib-mirror
Enter fullscreen mode Exit fullscreen mode

Manual:

git clone https://github.com/yuvrajangadsingh/private-work-contributions-mirror.git
cd private-work-contributions-mirror
bash setup.sh
Enter fullscreen mode Exit fullscreen mode

The installer runs an interactive setup wizard that auto-detects your repos, emails, and GitHub org.

Usage

contrib-mirror            # run sync
contrib-mirror --setup    # reconfigure
contrib-mirror --help     # show help
contrib-mirror --version  # show version
Enter fullscreen mode Exit fullscreen mode

Prerequisites































Requirement Why Check
Git Clone repos, create commits git --version
Bash Run the script bash --version
Access to private repos Fetch commits (SSH or HTTPS)
git remote -v in any work repo

GitHub CLI (optional)
Track PRs, reviews, issues cli.github.com

Works with…




Give it a star if this is useful to you.

Top comments (0)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.