# Git 3.0: What Actually Breaks (SHA-256, Rust, More)

> Originally published on [DevToolHub](https://devtoolhub.com/git-3-0-breaking-changes/).

Git 3.0 changes four defaults and removes seven commands, per git-scm.com's own BreakingChanges page.

## The defaults

- New repos default to **SHA-256** instead of SHA-1 (existing repos unaffected)
- New repos default to **reftable** instead of the loose-files backend
- Default branch name is **main**
- **Rust becomes mandatory** to build Git, rolling out across 2.52 → 2.55 → 3.0

Git developer Patrick Steinhardt called the Rust rollout "a test balloon" meant to give distributors time to adjust toolchains before it's required.

## The removals

`git-whatchanged`, grafting support, `git-pack-redundant`, the `--stdin` flag on `name-rev`, shorthand remote URL files, `core.commentString=auto`, and `core.preferSymlinkRefs=true` are all gone. `safe.bareRepository` also defaults to `explicit` now instead of `all`.

## Before it ships

Phoronix targets end of 2026. Grep your CI for the removed commands, confirm Rust toolchain availability if building from source, and check for any tooling parsing 40-character hashes that needs to handle 64-character SHA-256 ones instead.

Full breakdown: [devtoolhub.com/git-3-0-breaking-changes](https://devtoolhub.com/git-3-0-breaking-changes/)
