Git 2.56 Release Candidate Confirms Rust Will Become Mandatory in Git 3.0, Adds a New 'git refs' Toolbox
Git 2.56.0-rc1 adds new git refs subcommands and, via an amended 2.55 release note, confirms Rust will become a mandatory build dependency in Git 3.0.
Overview
The Git project’s second release candidate for its next feature release, v2.56.0-rc1, was tagged by maintainer Junio C Hamano on September 16, 2026, according to the tags listing and tag page in the project’s GitHub repository, which shows “gitster tagged this 16 Sep 16:09.” It follows the first release candidate, v2.56.0-rc0, tagged September 10. The accompanying release notes add a new set of reference-management subcommands and confirm, through a retroactive correction to the notes for the prior 2.55.0 release, that Rust will become a mandatory build dependency once Git 3.0 ships — a transition the project has been building toward across several recent releases, as previously reported.
What We Know
A new ‘git refs’ toolbox
“The ‘git refs’ toolbox has been extended with new ‘create’, ‘delete’, ‘update’, and ‘rename’ subcommands to create, delete, update, and rename references, respectively,” according to the Git 2.56 release notes. The same notes describe a related safety net: “When ‘git push origin/main’ or ‘git branch origin main’ is run, the command is now recognized as a potential typo, and advice has been added to offer a typo fix.”
Smaller workflow additions
The release notes list several other targeted additions:
- “The ‘git bisect’ command has been taught a ‘—reset-when-found[=
]’ option that tells the command to automatically run ‘git bisect reset’ to jump back to the original state or to the found culprit,” per the release notes. - “The ‘git branch’ command has been taught the ‘—delete-merged’ option to remove local branches that are already merged into their tracked remote-tracking branches,” the notes say.
- “‘git add’ has been taught a new ‘—resolved’ option to stage conflict-resolved paths, while leaving unrelated local changes unstaged,” according to the same document.
- “The ‘git replay’ command has been taught the ‘—linearize’ option to drop merge commits and linearize the replayed history, mimicking ‘git rebase —no-rebase-merges’.”
- The “git rev-list” command “has been augmented with a ‘—missing-only’ option that filters the output to only show missing objects,” and “‘git repack’ has been taught ‘—drop-filtered’ to delete local promisor blobs exceeding a limit (currently ‘blob:limit=’) in partial clones, reclaiming space,” both per the release notes.
Rust becomes mandatory in Git 3.0
The most consequential item in the 2.56 notes is not a 2.56 feature at all but a correction to history. “A description in the release notes for Git 2.55.0 has been retroactively updated to clarify that Rust support is enabled by default, but still optional, and will become mandatory in Git 3.0,” the 2.56 release notes state. The corrected passage, now part of the amended Git 2.55.0 notes, reads: “Rust support is enabled by default (but still allows opting out); in Git version 3.0, Rust will become mandatory.”
The correction closes a gap in the project’s own record: Git 2.53 made Rust default-enabled in both the Makefile and Meson build systems, as previously reported, and Git 2.55 made the Rust compiler required unless a developer explicitly opted out, but neither release’s notes had stated in so many words that the opt-out itself would disappear in Git 3.0. The amended 2.55.0 text now makes that explicit.
Build-system changes for Windows and macOS
The release notes also flag two platform-specific build changes. On Windows, “Windows build switches from MINGW64 to URCR64 runtime starting Git 2.56.0,” with the CMake-based build switching at the same time, according to the release notes. On macOS, “the build system has been updated to support building universal macOS binaries when ‘Rust’ is enabled, by compiling separate static archives for each target triple listed in ‘RUST_TARGETS’ and combining them using the macOS ‘lipo’ tool,” the notes say.
What We Don’t Know
As of this writing, the tags listing for the git/git repository shows v2.56.0-rc1 as the most recent tag, with no final v2.56.0 tag yet published, so the exact date the stable release will ship is not established in the sources reviewed. The release notes also do not specify a target date for Git 3.0 itself or say whether the Rust-mandatory change will land alongside the other foundational Git 3.0 changes — the SHA-256 default hash and the reftable default reference backend — that the project previously described as part of that milestone.