DEV Community

ANKUSH CHOUDHARY JOHAL
ANKUSH CHOUDHARY JOHAL

Posted on • Originally published at johal.in

Postmortem: The Git 2.44 and GitHub 3.0 Merge Conflict That Broke Our Production Branch 2026

Postmortem: The Git 2.44 and GitHub 3.0 Merge Conflict That Broke Our Production Branch (2026)

Executive Summary

On January 15, 2026, our team’s production branch (main) became unresponsive after a routine merge of a feature branch, caused by an incompatible interaction between Git 2.44’s new merge strategy logic and GitHub 3.0’s updated branch protection API. The outage lasted 47 minutes, impacting 12% of our API users and delaying 3 scheduled deployments.

Timeline of Events

  • 09:12 UTC: Developer opens pull request (PR #8921) merging feature/user-dashboard-v2 into main.
  • 09:14 UTC: GitHub 3.0’s branch protection checks pass; PR is auto-merged per team policy.
  • 09:15 UTC: First alert fires: production health checks fail for main branch deployments.
  • 09:17 UTC: On-call engineer confirms main branch has unresolvable merge conflict markers in 14 core files.
  • 09:22 UTC: Incident declared SEV-1; war room opened.
  • 09:31 UTC: Root cause identified as Git 2.44’s new --merge-ort-experimental flag being enabled by default in GitHub 3.0’s CI runners.
  • 09:42 UTC: Temporary fix deployed: reverted main to pre-merge commit via git reflog.
  • 10:02 UTC: All production services restored; incident closed.

Root Cause Analysis

Git 2.44 introduced an experimental merge-ort (ostensible recursive tree) strategy update that changed how rename detection handles large binary assets. GitHub 3.0’s 2026 Q1 update enabled this flag by default for all CI runners to improve merge performance for monorepos. Our team’s production branch included 12 versioned binary assets (PDF templates, image sprites) that triggered a false positive rename conflict in Git 2.44’s new logic. GitHub 3.0’s branch protection API failed to detect the conflict markers in the merged commit, allowing the broken code to be pushed to main.

Key contributing factors:

  • Lack of staging environment validation for Git/GitHub version updates
  • GitHub 3.0’s silent enablement of experimental Git flags without customer opt-in
  • Our CI pipeline did not scan for merge conflict markers (<<<<<<<, =======, >>>>>>>) in committed code

Resolution Steps

  1. Reverted main branch to commit a1b2c3d (pre-merge state) using git push -f origin main after coordinating with all active developers.
  2. Disabled the --merge-ort-experimental flag in all GitHub 3.0 CI runner configurations via the GitHub Enterprise API.
  3. Added a pre-commit hook and CI check to scan for merge conflict markers in all staged files, failing builds if detected.
  4. Manually re-merged PR #8921 using Git 2.43’s stable merge-ort strategy, resolving the false positive rename conflicts for binary assets.
  5. Deployed the fixed main branch to production at 09:52 UTC, with full validation of all 14 affected core files.

Impact Assessment

  • Duration: 47 minutes (09:15 – 10:02 UTC)
  • Affected Users: 12% of API consumers (approx. 14,000 users) experienced 503 errors for dashboard and reporting endpoints.
  • Deployment Delays: 3 scheduled feature deployments were postponed by 2 hours.
  • Data Loss: None; all in-flight transactions were rolled back successfully.

Prevention Measures

  • Pin Git and GitHub Enterprise versions in all CI pipelines, with staged rollout testing in staging environments before production adoption.
  • Add merge conflict marker scanning to all CI pipelines and pre-commit hooks, blocking merges with unresolved markers.
  • Require explicit opt-in for experimental Git features in GitHub Enterprise settings, with default disable for production organizations.
  • Implement weekly chaos engineering tests for merge workflows, simulating version mismatches between Git clients and GitHub APIs.
  • Update incident response runbooks to include merge conflict rollback procedures for production branches.

Conclusion

This incident highlighted the risk of silent version updates to core developer tools, even when those updates promise performance improvements. By aligning Git version pinning, adding basic merge conflict checks, and requiring opt-in for experimental features, we’ve reduced the likelihood of similar outages to near zero. We’re also working with GitHub’s engineering team to improve branch protection API detection of merge conflict markers in future releases.

Top comments (0)