Highlights from Git 2.56
- Source
- github.blog
- Author
- Elijah Newren
- Date
GitHub's tour of Git 2.56, which drew contributions from 104 people, leads with git add --resolved. The option stages only the paths that were in conflict and checks them for leftover conflict markers before staging.
That closes two common mistakes in one command. A blanket git add after a merge can sweep in unrelated edits, and a file with a stray marker can be committed as if it were resolved. With --resolved, Git refuses the second case outright.
This matters more as agents resolve merges. An agent told to fix conflicts and stage the result can now use a command whose scope is the conflicted files and whose check is mechanical, rather than relying on the model to remember which paths it touched or to scan for markers itself. Harness authors can put it in agent instructions once teams upgrade.

Context
Git 2.56 adds a way to stage resolved merge conflicts while leaving unrelated edits alone. As GitHub explains in its release overview, git add --resolved considers only paths still marked as conflicted. It checks selected regular files for leftover conflict markers before changing the staging area. If any remain, it stages none of the selected paths. This helps when a merge begins with other local edits already present: resolving the merge need not pull those edits into the same commit. The marker check catches unfinished conflict cleanup; it does not assess the correctness of the chosen resolution.
- Git 2.56 changes the merge-base search to stop once one side's exclusively painted commits are exhausted. GitHub reports a monorepo case falling from 0.68s to 0.01s, with production evaluations averaging about 20x faster in one repo and often around 70x in another.
- Path-walk repacking now works with reachability bitmaps and delta islands, removing two blockers for hosts. In GitHub's Fluent UI it produced a 164.4 MB pack versus 558.5 MB for a normal bitmapped repack, though it is still not on by default.
- The experimental git history command gains drop, which removes a commit and replays its descendants onto its parent. It aborts on conflicts and cannot drop root or merge commits or run on history containing merges.
- git branch --delete-merged bulk-deletes local branches whose tips are reachable from their matching upstreams. It supports --dry-run and skips branches checked out in a worktree, branches with missing upstreams, and any branch with deleteMerged set to false.
- Partial clones can now discard large blobs fetched on demand using git repack --filter=blob:limit=<size> --drop-filtered, refetching them from the promisor remote later. It is a manual cleanup, not an automatically bounded cache, and only supports blob:limit filters.
- benchmark — A standard public test set for comparing AI models — the shared scoreboards behind every "model X beats model Y" claim.
Checking sign-in…
Loading comments…


