Git 2.54 Released With New git history Command

Git 2.54 introduces the experimental git history command, config-based hooks, and more efficient repository maintenance by default.

More than two months after the 2.53 release, Git, a distributed version control system widely used in software development, has released version 2.54.

The most notable feature is the experimental git history command, designed to simplify history-rewriting tasks. It currently supports reword and split operations, allowing users to update commit messages or split commits without a full interactive rebase.

This is significant because git rebase -i, though powerful, can be unnecessarily complex for minor edits. In contrast, git history reword updates commit messages directly, and git history split interactively moves selected changes into a new parent commit. The new command does not modify the working tree or index and can operate on bare repositories.

Another key update is the introduction of config-based hooks. Previously, Git hooks were limited to scripts in .git/hooks or a shared core.hooksPath, which made reuse across repositories challenging. In Git 2.54, hooks can be defined in configuration files, simplifying management of shared hook behavior at the user, system, or repository level.

Git’s internal hook handling has also been updated to support this new model. Several built-in hooks now use the updated hook API, extending the benefits of configuration-based management throughout Git’s hook system.

On the repository maintenance side, Git 2.54 now uses geometric repacking as the default strategy for manual maintenance runs. As a result, git maintenance run adopts a more incremental repacking approach by default, which can lower maintenance costs and keep data structures up to date.

In addition, Git 2.54 also introduces several valuable improvements. The interactive git add -p workflow now offers better visibility into previously accepted or skipped hunks and adds a --no-auto-advance option to remain on the current file after the last hunk decision.

Moreover, the release enhances Git’s HTTP transport behavior, with Git now handling HTTP 429 “Too Many Requests” responses by retrying requests rather than treating them as fatal errors. This behavior respects the server’s Retry-After header and includes new configuration options for retry counts and timing.

Partial clone workflows have also been improved. The experimental git backfill command now accepts revision ranges and pathspec arguments, enabling users to fetch missing blobs for a specific history segment or part of the tree rather than retrieving all data from HEAD.

Other updates in Git 2.54 include support for non-ASCII alias names, enhancements to git log -L, and improvements to git replay, which also supports the new git history command. Overall, this release focuses on refining daily workflows across diverse Git use cases rather than introducing a single major change.

For more details about all the changes in Git 2.54, refer to the release announcement.

Bobby Borisov

Bobby Borisov

Bobby, an editor-in-chief at Linuxiac, is a Linux professional with over 20 years of experience. With a strong focus on Linux and open-source software, he has worked as a Senior Linux System Administrator, Software Developer, and DevOps Engineer for small and large multinational companies.

Leave a Reply

Your email address will not be published. Required fields are marked *