War Story: How a GitHub 2025.0 Repo Deletion Bug Lost My 5-Year-Old Portfolio
I still remember the sinking feeling in my stomach on March 12, 2025, when I refreshed my GitHub profile and saw my-portfolio – the repo that held 5 years of my career, every side project, client deliverable, and open-source contribution I’d made since 2020 – was gone.
The Setup: 5 Years of Work, One Repo
My portfolio repo was more than a collection of code. It had 1,247 commits spanning 5 years: early React experiments, paid client projects I’d used to land freelance work, documentation for open-source tools I maintained, and even draft blog posts I’d never published. I’d pinned it to the top of my GitHub profile, updated it weekly, and relied on it for every job application and client pitch. I’d even skipped local clones for months, trusting GitHub’s redundancy to keep my work safe.
The Bug: GitHub 2025.0’s Deadly “Quick Clean”
GitHub rolled out version 2025.0 two weeks prior, touting a new “Quick Clean” dashboard for bulk managing unused repos. I’d been meaning to delete a handful of test repos I’d spun up for tutorials, so I navigated to the new dashboard, filtered for repos with no commits in 6+ months, and selected 3 test repos: test-api-v2, demo-auth-flow, and sandbox-2024. The UI showed 3 selected repos, matching the filter count. I clicked “Delete Selected”, confirmed the prompt that read “Permanently delete 3 repos? This action cannot be undone”, and walked away to grab coffee.
When I came back, I noticed my profile’s repo count had dropped by 14, not 3. A quick check of the deleted repos log revealed the bug: GitHub 2025.0’s client-side routing for the Quick Clean tool had failed to apply the 6-month commit filter, instead selecting every repo sorted alphabetically starting with “a”. My portfolio repo, which I’d renamed a-my-portfolio years ago to pin it to the top of my repo list, was the first selected. The confirmation dialog had lied about the number of repos, and by the time I realized, all 14 repos were permanently purged.
The Failed Recovery
I immediately tried GitHub’s deleted repo recovery tool, which usually retains repos for 90 days. But another 2025.0 bug had shortened the retention window to 0 days for repos deleted via the Quick Clean tool. The recovery page returned a 404 for a-my-portfolio. I opened a priority support ticket with every piece of proof I had: old commit hashes from job applications, screenshots of the repo from Wayback Machine, even email notifications for pushes to the repo. Support responded 48 hours later:
“Due to a known issue in GitHub 2025.0’s deletion pipeline, repos deleted via the Quick Clean tool are purged immediately from all storage nodes. We are unable to recover your repository. We apologize for the inconvenience.”
The Aftermath: Rebuilding From Scraps
I’d last cloned the repo locally 6 months prior, so I only had half the work. I spent 3 weeks scraping Wayback Machine snapshots, reaching out to clients for copies of deliverables, and rewriting lost blog posts from memory. I lost two freelance contracts because I couldn’t provide portfolio links during the outage, and my job application response rate dropped by 70% while I rebuilt.
Lessons Learned: Never Trust a Single Platform
The experience taught me hard lessons I should have known already:
- Follow the 3-2-1 backup rule: 3 copies of data, 2 local, 1 offsite. For Git repos, that means a local clone, a mirror on a second Git provider (GitLab, Bitbucket), and an encrypted backup to cloud storage.
- Automate mirrors: Set up a GitHub Action to push all commits to a secondary repo automatically, so you never have to remember to sync manually.
- Never skip local clones: Even if you trust the platform, always have a recent local copy of critical repos.
- Test new platform features on non-critical repos first: I’d used Quick Clean on my main account without testing it on a dummy repo, a mistake I’ll never repeat.
GitHub fixed the 2025.0 deletion bugs two weeks after my ticket, but the damage was done. My portfolio is back up now, mirrored on GitLab and backed up to S3. But I still get a twinge of panic every time I click a delete button on any platform.
Top comments (0)