Engineering

Git 2.56 stages only the conflicts you actually fixed

Git 2.56.0, released 28 September, adds git add --resolved, git history drop, and a way to delete branches that are already merged.

Choi Hyun-im

Git 2.56.0 was released on 28 September 2026. Junio C Hamano’s announcement counts 748 non-merge commits since 2.55.0, from 104 people, 39 of them new to the project. The commands that will show up in daily use are smaller than that number suggests.

git add --resolved stages paths whose conflicts you have finished, and leaves unrelated local edits unstaged. Before it stages anything, it scans the unmerged paths for leftover conflict markers and stops if it finds them. That is the failure mode of a hurried rebase: you think the file is clean, git add takes the markers with it, and the bad merge lands on the branch. The new flag is the stricter version of “I’m done with this conflict.”

git history, still experimental, gains a drop subcommand. It removes a commit and replays the descendants onto that commit’s parent. git branch --delete-merged removes local branches that are already contained in their upstream. git branch -d now tells you when it cannot delete a branch because a bisect is using it. git bisect run gains --reset-when-found. By default it returns you to the commit you had checked out before the bisect. Pass found if you want the culprit left checked out and the bisect state cleared. The option does not work with --no-checkout.

A few more changes are for larger repositories rather than for the merge you are in right now. git refs can create, update, delete, and rename refs. git replay can linearize history, dropping merge commits, without touching the worktree, though that option cannot be combined with --contained. git repack can drop filtered objects in a partial clone so the promisor remote can be asked for them again. git status advice, when you are behind or have diverged, now suggests an explicit git pull <remote> <branch>.

Install 2.56 when your distribution offers it. The command to try first, the next time a rebase stops, is git add --resolved.