AI Briefing
KO

Key Improvements in Git 2.54

·2026.04.21 01:43

Key point

Git 2.54 adds the experimental `git history`, config-based hooks, and HTTP 429 retry support.

Details

The Git project has released Git 2.54. This release involved more than 137 contributors, of whom 66 were first-time contributors. Since GitHub last covered 2.52, this post together summarizes the key changes in 2.53 and 2.54.

The most notable change is the new experimental command git history. This command targets simpler history-editing tasks as an alternative to the complex git rebase -i, and currently supports two features: reword and split. reword rewrites a specific commit message in place, and split divides a single commit into two based on selected hunks. In this process, neither the working tree nor the index is touched, and it can also work on a bare repository.

git history does not support history that includes merge commits, and it also rejects operations that could potentially cause conflicts. In other words, rather than being an open-ended interactive rebase, it's a tool focused on small, clear history rewrites. Under the hood, it's built on the core mechanism of the newly separated git replay.

The hook system has also changed significantly. You no longer have to keep hooks only as executable files in .git/hooks; they can now be defined in a config file like this:

  • hook.<name>.event = pre-commit
  • hook.<name>.command = ~/bin/linter --cpp20

This approach can be placed in ~/.gitconfig, /etc/gitconfig, or the repository's local config, making it easy to deploy the same hook policy across multiple repositories. Multiple hooks can be attached to the same event, and existing traditional hook scripts still work as before, running last. You can also disable an individual hook with hook.<name>.enabled = false.

In maintenance behavior, geometric repacking is now the default. The maintenance.strategy = geometric option, which was optional in 2.52, has become the default strategy for git maintenance run in 2.54. As a result, packfiles are cleaned up more incrementally and efficiently than the traditional gc approach of repacking everything at once, and auxiliary data such as commit-graph and reflog are also managed together.

Several other improvements were also added that help with everyday use.

  • git add -p now shows the previously accepted/skipped state when moving between hunks, and --no-auto-advance can be used to stop automatic movement between files.
  • git replay now performs atomic reference updates by default, and supports --revert mode, dropping empty commits, and replaying up to the root commit.
  • HTTP transport now handles HTTP 429 Too Many Requests, and retry policy can be controlled via Retry-After, http.retryAfter, http.maxRetries, and http.maxRetryTime.
  • git log -L now routes its internal output path through the standard diff pipeline, making it compatible with pickaxe options like -S and -G.

Overall, rather than one big feature, Git 2.54 is a release that simultaneously polishes history rewriting, hook management, maintenance, and network resilience. While the experimental features may still change their interfaces, the direction is clearly heading toward a Git that is more automation-friendly and easier to manage.

This summary was generated automatically by AI. Check the original for the author's claims and context. Copyright belongs to the original author.

Our guide explains how the AI works. Report summary errors, attribution issues, or removal requests via Contact.