The Git 2.56 release includes over 700 non-merge commits and introduces several improvements, although it is not expected to significantly alter the user experience for most. A notable feature is the addition of the drop subcommand to the experimental git history toolbox, which allows users to remove a specified commit from the current branch's history, replaying all subsequent commits. However, this feature does not function with merge commits, limiting its usability in many repositories.
The git status command now suggests a git pull command to update branches that are behind their tracked counterparts, but it still indicates that a branch is 'up to date' even if it lags behind an unfetched remote tracking branch.
The git refs command has gained new subcommands in version 2.56, including create, delete, update, and rename, which perform as expected based on their names. Additional minor usability enhancements include a new --delete-merged option for git branch, which removes local branches merged into their remote tracking branches, and improved error messaging when attempting to delete branches used for bisection. The git add command now features a --resolved option that only adds files with resolved merge conflicts.
The release also includes numerous bug fixes, refactorings, and performance improvements. However, it appears that more significant changes are being reserved for future updates. In early September, Git maintainer Junio Hamano solicited community input on whether to proceed with the long-anticipated 3.0 release or to issue additional 2.x updates prior to 3.0.
The decision is critical as the 3.0 release will introduce compatibility breaks, notably the transition from SHA-1 to SHA-256 as the default hash function. SHA-1 has been considered weak, raising concerns for applications like Git, where hashes are used to identify and verify repository objects. While Git has included defenses against known SHA-1 vulnerabilities, moving to SHA-256 is seen as a prudent step.
Non-experimental support for SHA-256 has been available since the 2.42 release in 2023, but compatibility with major forge sites has delayed its default implementation. GitLab has supported SHA-256 since 2024, while GitHub's support remains uncertain. Brian M. Carlson, a GitHub employee involved in the SHA-256 transition, indicated that updates on this topic are forthcoming and suggested that a 3.0 release might be favorable.
Carlson also proposed a change to Git's handling of hexadecimal object IDs, advocating for the acceptance of only lower-case IDs to eliminate ambiguity that has led to bugs and security vulnerabilities. Additionally, the upcoming 3.0 release is expected to switch to a reftable mechanism for storing references, improving performance for repositories with a large number of refs.
Concerns regarding compatibility with other software packages that access Git repositories, such as libgit2, have been addressed, as libgit2 now supports both reftables and SHA-256. Another anticipated change is the potential requirement for a Rust compiler for building Git, which has been trialed but not yet mandated.
Despite these considerations, Carlson concluded that they should not impede the 3.0 release, which Hamano has yet to announce. He emphasized that the decision-making process is not a popularity contest and noted the absence of strong opposition to transitioning to the 3.x era. If the 3.0 release does not occur in 2026, it is expected to follow shortly thereafter.