Skip to content

Product1 publisher3 min readPublished

Git 2.56 ships its conflict-marker check as a flag that scripts and agents must opt into

Git 2.56 adds a staging flag that aborts on leftover conflict markers and cuts one Chromium diff from about eight minutes to 0.07 seconds. Teams get the speed by upgrading, but they get the safety only by editing the scripts their developers and coding agents run.

The Product Desk · Product desk

Drafted by a language model from the sources cited here and checked against its claim ledger before publication. How we use AISend a correction

What happened

  • The --resolved option limits staging to paths still unmerged in the index, so edits elsewhere in the working tree stay out of the commit.
  • On the Linux kernel, git merge-base --all v4.8 v4.9 fell from 167,441 traversal steps and 0.29 seconds to 3,887 steps and 0.01 seconds.
  • Removing a quadratic regression in packfile loading cut load time in a 37,815-pack repository from 4.5 seconds to near-instant.
  • In the Fluent UI repository, a --path-walk repack produced a 164.4 MB pack against 558.5 MB for an ordinary bitmapped repack, about 71% smaller.
  • A new git branch --delete-merged option clears already-merged branches by pattern and offers a --dry-run preview first.

Compiled by The Product DeskSomething wrong?How this is made

Why it matters

  • decision An upgrade announcement needs two lists, one for changes that arrive on install and one for changes that need a script edit, so nobody assumes the conflict-marker check is on by default.
  • constraint Teams with ordinary-sized checkouts need their own before-and-after timings before an upgrade note promises them faster diffs.
  • capability Platform teams and hosting providers that held off on path-walk repacking because it lacked bitmap and delta-island support can now trial it on their largest repositories.
  • capability Automated jobs that write refs can use old-value checks in the new git refs command, so two jobs cannot overwrite each other's update without noticing.

Resolving a merge conflict usually ends with `git add` on the files you fixed [2]. According to devops.com's account of Git 2.56, that step goes wrong in two ways: an unrelated change gets staged along with the fix, or a file that still has conflict markers in it gets staged [2]. It is easy to read the release as a safety upgrade that comes with the install. The write-up does not describe any change to plain `git add`. The new check runs only when a person or a script passes `--resolved` [3].

The speed improvements do come with the install. In the benchmarks devops.com reports, Git now finds merge bases faster because it stops walking history once it has what it needs [4]. Merge-base calculations run inside merges, rebases and CI pipelines [6]. One monorepo case fell from 0.68 seconds to 0.01 seconds [5].

The diff fix is narrower than its headline figure. It removes quadratic scans from path-limited working-tree diffs, and the eight-minute case was measured on a Chromium checkout with roughly 500,000 index entries [7]. That case got about 6,900 times faster [2].

Storage savings need a flag of their own. Path-walk repacking still has to be switched on with `--path-walk` [9]. Partial-clone teams also get `git repack --drop-filtered`, which removes blobs matching a filter such as files over 1 MB and fetches them again when they are needed [11].

The devops.com summary says the new branch-cleanup, repacking and history options give "guardrails and automation opportunities" to developers and AI coding agents [15]. The agent case I would put first is scripted conflict resolution, because no person reads the file before it is staged. An abort there is a failure the pipeline can see. The experimental `git history drop` aborts on conflicts and does not yet handle merge commits [14]. I would keep agents away from it while it is still experimental.

I'd change the staging step in those scripts first. The cost is that an aborting `git add` will stop some agent runs that used to finish [3]. Someone then has to decide what the agent does after the abort, either hand off to a human or fail the job.

For the rest of the release, two questions sort each change. The first is whether it pays out on upgrade or only after someone edits a command. The second is whether the pain it removes already shows up in your CI timings or incident notes. An automatic change to a pain you already measure is worth timing before and after, starting with the merge and rebase steps in CI. When the change is automatic and the pain is absent, it can go out on the normal upgrade schedule with no announcement. An opt-in change to a pain you have means an edit: the conflict script or the agent's staging step calls `--resolved`, and the largest repository gets a `--path-walk` trial. The last cell, opt-in with no pain, can wait, and for most teams I would put the experimental history commands there.

What to watch

  • Whether CI and coding-agent vendors change their conflict-resolution steps to call git add --resolved by default.
  • Storage results from hosting providers running --path-walk repacks on repositories beyond the Fluent UI example.
  • Whether git history drop gains merge-commit support and loses its experimental label.
Loading claim ledger
Loading source directory links
Loading share composer
Loading topic controls
Loading related stories