Skip to content
Tech AI Wire

Git 3.0 setzt auf SHA-256 als Standard und verlangt Rust

Git 2.56-rc0 erschien am 11. September 2026, und das dahinter liegende Release 3.0 stellt neue Repositories auf SHA-256, reftable und den Branch main um.

Von Tech AI Wire Team

3 Min. Lesezeit

XLinkedIn
The Git project's BreakingChanges documentation page on git-scm.com, open at the section describing backwards-incompatible releases.

Die Zahlen

SHA-1 collision attacks the hash change cites: 2015, 2017 and 2020
3
release candidate published on September 11, 2026
2.56

Git 2.56-rc0 erschien am 11. September 2026, und das Release danach ist jenes, das Dinge bricht. Gits eigenes Dokument zu brechenden Änderungen listet auf, was Version 3.0 fĂŒr neue Repositories Ă€ndert. Sie verwenden SHA-256 statt SHA-1, speichern Referenzen im reftable-Format und nennen den ersten Branch main. Der Bau von Git verlangt dann außerdem Rust. Phoronix berichtete ĂŒber den Release-Kandidaten und verortet Git 3.0 etwa zum Jahresende 2026.

Jede dieser Voreinstellungen gilt nur fĂŒr Repositories, die nach der Änderung angelegt werden. Bestehende Repositories arbeiten weiter wie bisher.

Die vier geÀnderten Voreinstellungen

VoreinstellungHeuteIn Git 3.0
Hash-VerfahrenSHA-1SHA-256
Referenzspeicherfilesreftable
Name des ersten Branchmastermain
safe.bareRepositoryallexplicit

Hinter der Hash-Änderung steht ein Sicherheitsargument. Gits Dokument nennt drei Angriffe auf SHA-1 beim Namen: SHAppening 2015, SHAttered 2017 und Shambles 2020. Eine Hash-Kollision in einer Versionsverwaltung bedeutet, dass zwei verschiedene Objekte dieselbe IdentitĂ€t beanspruchen können.

Reftable ersetzt das alte Layout, in dem jede Referenz eine Datei auf der Platte war. Gits Dokument nennt zwei GrĂŒnde: Es verhĂ€lt sich korrekt auf Datei­systemen unter Windows und macOS, die Groß- und Kleinschreibung ignorieren, und es ist schneller bei Repositories mit vielen Referenzen.

Der Wechsel von safe.bareRepository von all auf explicit ist kleiner, hat aber einen echten Angriff im RĂŒcken. Die heutige Voreinstellung lĂ€sst Git ein bare Repository irgendwo im Verzeichnisbaum finden, auch eines, das ein Angreifer in einem Arbeitsverzeichnis abgelegt hat.

Rust wird Pflicht

Die Rust-Pflicht kommt in Schritten. Gits Dokument beschreibt die Reihenfolge: Rust-UnterstĂŒtzung wurde in Git 2.52 automatisch erkannt, in 2.55 standardmĂ€ĂŸig aktiviert und wird in 3.0 verpflichtend.

Damit steht Git neben anderer Basissoftware, die denselben Schritt geht; Ubuntu ersetzt die GNU-coreutils durch Rust-Implementierungen in seiner nĂ€chsten Version. Wer Git auf einer ungewöhnlichen Plattform aus dem Quelltext baut, muss eine Rust-Toolchain kĂŒnftig einplanen.

Git 3.0 entfernt außerdem seit Jahren veraltete Funktionen, darunter git pack-redundant, git whatchanged, die UnterstĂŒtzung fĂŒr Graft-Dateien und Ă€ltere Mechanismen zur Speicherung von Remotes.

Was 2.56 selbst bringt

Die Release Notes zu 2.56 drehen sich vor allem um Geschwindigkeit und Unterbau. Das AufzĂ€hlen loser Objekte wĂ€hrend git status fĂ€llt von quadratischer auf O(n log n)-KomplexitĂ€t. Die Berechnung der Merge-Basis bricht frĂŒher ab, wo sie kann, was die Notes als deutliche Beschleunigung beschreiben.

Es gibt eine neue BefehlsflÀche: git refs erhÀlt Unterbefehle zum Anlegen, Löschen, Aktualisieren und Umbenennen von Referenzen. Der Hinweistext von git status nennt nun Remote und Branch in dem git pull, das er vorschlÀgt, wenn Ihr Branch und sein Upstream auseinanderlaufen.

Phoronix hĂ€lt fest, dass 2.56 zudem Diff-Muster fĂŒr Swift ergĂ€nzt, die Attribute, Modifikatoren, fehlbare Initialisierer und Generics abdecken, und das ORT-Merge-Backend gegen beschĂ€digte BĂ€ume hĂ€rtet. Darunter entfernt das Release weiter globale Variablen zugunsten von Zustand pro Repository, was die Grundlage fĂŒr austauschbare Objektdatenbanken ist.

Was das fĂŒr Entwickler bedeutet

Die Frage der VertrĂ€glichkeit lautet nicht, ob Ihr Git funktioniert, sondern ob Ihre Forge es tut. Ein SHA-256-Repository muss von allem verstanden werden, was es berĂŒhrt, einschließlich Ihres Hosters, Ihrer CI-Runner und jedes Werkzeugs, das Objekt-IDs auswertet. Testen Sie diesen Pfad, bevor Sie ein Repository mit der neuen Voreinstellung anlegen.

PrĂŒfen Sie den eigenen Code auf fest verdrahtete Annahmen zur Hash-LĂ€nge. Vierzig hexadezimale Zeichen stecken seit zwanzig Jahren in Skripten, regulĂ€ren AusdrĂŒcken und Datenbankspalten. SHA-256-Objektnamen sind vierundsechzig Zeichen lang, und ein varchar(40) schneidet sie schlicht ab.

Reftable lohnt sich frĂŒh, wenn Sie Repositories mit Tausenden Branches oder Tags pflegen, denn dort zahlt sich das Format aus. Der Branch-Name zĂ€hlt am wenigsten: Die meisten Teams haben ihn vor Jahren gesetzt, und ein neu angelegtes Repository lĂ€sst sich mit einem Befehl umbenennen.

Quellen

  1. Git 2.56-rc0 Released With Updated Contribution Guidelines, Improvements For Swift - Phoronix
  2. Git 2.56 release notes - Git project
  3. Git BreakingChanges documentation - Git project

Ähnliche Artikel