Git blame will honor .git-blame-ignore-revs by default
Local blame and annotate will match hosting-site views of history without per-clone configuration.
Git is set to teach git-blame and git-annotate to read a committed .git-blame-ignore-revs list automatically, closing a long-standing gap between local tooling and the web UIs that already skip bulk formatting and refactor commits.
Since 2019, blame has been able to ignore uninteresting revisions through an explicit ignore file or the blame.ignoreRevsFile setting. Maintainers deliberately left that opt-in only while the feature was new. In the years since, a root-level ignore list became the de facto convention on GitHub, GitLab, and Gerrit, and in large projects such as Chromium and LLVM. The result was a familiar mismatch: the browser attributed real authorship cleanly, while a local blame run still pinned lines on mass reformat commits unless every developer configured each clone by hand.
Ravi Mistry's change makes the committed blob at HEAD the default starting point for that ignore list, in both bare and non-bare repositories. Using the object from HEAD, rather than a working-tree path, keeps local results aligned with hosting platforms even when the on-disk file is missing, untracked, or locally modified. Non-regular tree entries such as committed symlinks are skipped. Users and repositories can still override or clear the default through existing configuration and command-line options, including an empty ignore setting that disables it.
Because the default now pulls content controlled by the repository itself, the series first hardens the ignore-list parser. Missing object names no longer trigger lazy fetches or pack rescans in partial clones, and tag peeling is limited to objects already present locally. Git maintainer Junio C Hamano marked the work ready for the next integration cycle after a short review pass, writing that the latest revision "looks good."