<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c" -->

---
title: Git 2.54: new experimental history rewriting command and...
description: Git 2.54 introduces several notable features. The experimental `git history` command adds `reword` and `split` subcommands for targeted history rewrites...
canonical: https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Git 2.54: new experimental history rewriting command and other changes | daily.dev
og:description: Git 2.54 introduces several notable features. The experimental `git history` command adds `reword` and `split` subcommands for targeted history rewrites...
og:url: https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c
og:image: https://api.daily.dev/og/posts/w8FHpT86C.png
og:image:alt: Git 2.54: new experimental history rewriting command and other changes
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Git 2.54: new experimental history rewriting command and other changes

**[Collections](https://daily.dev/sources/collections)** · 2 min read · 1 upvotes · 0 comments

## Summary

Git 2.54 introduces several notable features. The experimental `git history` command adds `reword` and `split` subcommands for targeted history rewrites without touching the working tree. Config-based hooks allow defining hooks in gitconfig files for easier sharing across repositories. A new `git repo structure` command provides repository statistics including object counts and sizes. Geometric repacking is now the default maintenance strategy. Additional improvements include `git add -p` usability enhancements, automatic HTTP 429 retries, `git log -L` pickaxe support, and a `git rebase --trailer` option.

## Content

Git 2.54 is out, and there are a few genuinely useful additions worth knowing about.

## Experimental `git history` command

The headline feature is a new `git history` command that aims to make targeted history rewrites less painful than the existing tools. It currently has two subcommands:

- **`git history reword`** - edit a commit message and automatically update any descendant branches, without checking out the branch first
- **`git history split`** - interactively split a commit into two using a hunk selector, again without touching the working tree

The "without touching the working tree" part is the key improvement here. Both operations work on commits that aren't currently checked out, which removes a lot of the friction from the usual rebase workflow.

A few caveats: the command is explicitly experimental, and it doesn't support merge commits yet.

## Config-based hooks

You can now define hooks directly in gitconfig files instead of dropping scripts into `.git/hooks/`. The syntax looks like:

```
git config set hook.<name>.event <event>
git config set hook.<name>.command <command>
```

This makes it much easier to share hooks across repositories and check them into version control. Multiple hooks per event are supported.

## Repository statistics with `git repo structure`

A new `git repo structure` command reports object counts, inflated size, disk size, and the largest objects in a repository. Useful for diagnosing why a repo has gotten slow or bloated over time.

## Geometric repacking now on by default

Geometric repacking is now the default strategy when running `git maintenance run`. This should improve maintenance performance for most repositories without any configuration changes.

## Other improvements

- `git add -p` has usability improvements
- HTTP 429 responses are now retried automatically
- `git log -L` now works with pickaxe options
- Incremental MIDX compaction
- `git rebase --trailer` option for adding trailers during rebase
- Better handling of expired GPG key signatures
- `git blame --diff-algorithm` for controlling the diff algorithm used
- Unicode alias names are now supported
- Partial clone backfill can be scoped more precisely

## Similar posts on daily.dev

- [What's new in Git 2.55.0?](https://daily.dev/posts/what-s-new-in-git-2-55-0--ytx0ezs5f) · GitLab · 172 upvotes · 17 comments

---

Tags: [#git](https://daily.dev/tags/git), [#version-control](https://daily.dev/tags/version-control)

[View this post on daily.dev](https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Git 2.54: new experimental history rewriting command and other changes","url":"https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c"},"datePublished":"2026-04-20T17:13:29.822Z","dateModified":"2026-04-28T10:21:24.532Z","description":"Git 2.54 introduces several notable features. The experimental `git history` command adds `reword` and `split` subcommands for targeted history rewrites...","isAccessibleForFree":true,"articleSection":"Collections","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collections","logo":"https://media.daily.dev/image/upload/s--fk_6ycEi--/f_auto,q_auto/v1780996001/logos/collections?_a=BAMAMiWQ0","url":"https://daily.dev/sources/collections"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/git-2-54-new-experimental-history-rewriting-command-and-other-changes-w8fhpt86c","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"git,version-control","timeRequired":"PT2M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collections","item":"https://daily.dev/sources/collections"},{"@type":"ListItem","position":3,"name":"Git 2.54: new experimental history rewriting command and other changes"}]}
```

