TL;DR: master history was rewritten on 2026-04-21 (commits stripped of large historical artifacts). If you have a local clone, re-fetch or re-clone.
What happened
The cosanlab/master branch has been rewritten via git filter-repo to strip ~63 MB of bloat from commit history: old notebook snapshots with embedded image outputs, stale docs builds (docs/auto_examples/, scripts/nilearn_cache/), a forgotten dist/*.egg, and other files that were deleted years ago but left unreachable-yet-packed bytes in .git.
This was done in preparation for the 0.6.0 rewrite in #453 — the install-from-git path (pip/uv install nltools @ git+...) was fetching nearly 200 MB for every consumer.
Effects
- Every commit SHA on master has changed (except pre-2015 root commits — nothing was stripped from them).
- The tree at HEAD is byte-identical to pre-rewrite — no code/content changes, just fewer artifacts in old commits.
- All release tags (v0.3., v0.4., v0.5.*) remapped to their rewritten equivalents.
git checkout v0.5.1 still gives you the v0.5.1 tree.
- PyPI releases unaffected — release artifacts are independent of commit SHAs.
- GitHub Releases pages unaffected — release URLs and asset downloads still work.
- nltools.org docs unaffected — served from
gh-pages, which was not rewritten.
- 29 long-stale feature branches deleted (add_divide, align_bug, bug_fix, documentation, modular, more_templates, etc. — all predating the 0.6.0 effort).
If you have a local clone
Your clone still points at old commit SHAs that are no longer reachable from any branch or tag. To sync:
git fetch --all --prune --prune-tags
git reset --hard origin/master # if you were on master
# or delete your branch and re-clone
Local commits/branches you made on top of old master: cherry-pick them onto the new master, or use git rebase --onto origin/master <old-master-sha>.
Rollback / recovery
Full pre-rewrite state is preserved at backup/master-pre-rewrite-20260421 (annotated tag). If you need to reference an old commit by its pre-rewrite SHA, GitHub retains unreachable commits for ~90 days — you can still fetch them directly via git fetch origin <old-sha>.
Closing this issue once things stabilize. Feel free to tag me if something breaks.
TL;DR:
masterhistory was rewritten on 2026-04-21 (commits stripped of large historical artifacts). If you have a local clone, re-fetch or re-clone.What happened
The
cosanlab/masterbranch has been rewritten viagit filter-repoto strip ~63 MB of bloat from commit history: old notebook snapshots with embedded image outputs, stale docs builds (docs/auto_examples/,scripts/nilearn_cache/), a forgottendist/*.egg, and other files that were deleted years ago but left unreachable-yet-packed bytes in.git.This was done in preparation for the 0.6.0 rewrite in #453 — the install-from-git path (
pip/uv install nltools @ git+...) was fetching nearly 200 MB for every consumer.Effects
git checkout v0.5.1still gives you the v0.5.1 tree.gh-pages, which was not rewritten.If you have a local clone
Your clone still points at old commit SHAs that are no longer reachable from any branch or tag. To sync:
Local commits/branches you made on top of old master: cherry-pick them onto the new master, or use
git rebase --onto origin/master <old-master-sha>.Rollback / recovery
Full pre-rewrite state is preserved at
backup/master-pre-rewrite-20260421(annotated tag). If you need to reference an old commit by its pre-rewrite SHA, GitHub retains unreachable commits for ~90 days — you can still fetch them directly viagit fetch origin <old-sha>.Closing this issue once things stabilize. Feel free to tag me if something breaks.