Ce qui se passe
Git 2.56 est en version candidate et doit sortir fin septembre 2026. Mais l'article de LWN regarde surtout plus loin : début septembre, le mainteneur Junio Hamano a demandé si la version suivante devait être la 3.0, avec ses ruptures de compatibilité. Une mise à jour de l'article donne le plan retenu, exposé par Patrick Steinhardt à Kernel Recipes :
| Date | Version | Rôle |
|---|---|---|
| décembre 2026 | 2.98 | annonce que la transition arrive |
| avril 2027 | 2.99 | version maintenue au long cours |
| avril 2027 | 3.0 | base de toutes les versions suivantes |
Ce qui change par défaut en 3.0
- SHA-256 au lieu de SHA-1 pour identifier les objets (fichiers, arbres, commits). SHA-1 est jugé faible ; Git se protège des attaques connues, mais un algorithme cassé permettrait en principe de falsifier un historique sans laisser de trace. Le support stable existe depuis Git 2.42, en 2023.
- reftable pour les références, à la place d'un fichier par référence sous
.git/refs/complété parpacked-refs. Ce format binaire, disponible depuis 2.45, tient la charge là où l'ancien s'essouffle : le dépôt Android dépasse 800 000 références. - Rust obligatoire pour compiler Git : une plateforme sans compilateur Rust ne pourra plus mettre à jour.
- brian m. carlson propose en plus de n'accepter les identifiants d'objets
qu'en minuscules. Aujourd'hui
f00f00etF00F00désignent le même objet, une ambiguïté qui a déjà produit des bugs et des failles.
Les dépôts en SHA-1 et sans reftable resteront entièrement pris en charge.
Le point bloquant : forges et outils
GitLab gère SHA-256 depuis 2024, Forgejo aussi. GitHub, pas encore — et publier un Git qui crée par défaut des dépôts incompatibles avec GitHub inquiète les développeurs du projet. brian m. carlson, employé de GitHub et moteur de la transition, a seulement indiqué que des nouvelles arrivaient. Côté bibliothèques, Patrick Steinhardt a ajouté reftable à libgit2, qui active SHA-256 par défaut depuis août ; JGit et Gitoxide sont prévenus depuis plus d'un an.
Ce qui risque de casser chez vous : les scripts qui supposent un identifiant de
40 caractères hexadécimaux (SHA-256 en compte 64), les outils qui lisent
.git/refs/ directement, les bibliothèques tierces qui ignorent reftable.
Comment s'y préparer
git init --object-format=sha256 --ref-format=reftable essai-git3
git -C essai-git3 rev-parse --show-object-format --show-ref-formatFaire passer hooks, scripts de déploiement et CI sur un tel dépôt révèle vite ce qui suppose encore SHA-1.
En attendant : Git 2.56
Plus de 700 commits hors fusions, sans bouleversement. À noter :
git history drop <commit>(sous-commande expérimentale) retire un commit et rejoue les suivants — refusé si l'historique contient des fusions ;git branch --delete-mergedsupprime les branches locales déjà fusionnées dans leur branche suivie ;git add --resolvedn'ajoute que les fichiers dont le conflit est résolu ;git refsgagnecreate,delete,updateetrename;git statuspropose ungit pullquand la branche est en retard.
Source : Looking forward to Git 2.56 - and 3.0, LWN.net, septembre 2026 (lien d'abonné partagé, article mis à jour après Kernel Recipes).