Le projet open source Git a publié la version 2.56.0 le 28 septembre 2026, après des contributions de plus de 104 personnes, dont 39 nouveaux contributeurs. Cette version vise à réduire les risques d’erreurs de fusion et à accélérer les opérations dont dépendent les grands dépôts et les services d’hébergement de code.
Indexer les conflits sans toucher aux autres modifications
Git 2.56 ajoute le mode git add --resolved pour traiter uniquement les fichiers qui étaient en état de conflit. Contrairement à des commandes comme git add -u, le nouveau mode n’essaie pas d’ajouter tous les fichiers suivis modifiés, ce qui protège les modifications locales sans rapport avec l’opération de fusion.
Avant l’indexation, Git examine les fichiers texte non fusionnés à la recherche de marqueurs de conflit résiduels. S’il trouve un marqueur dans un fichier donné, il laisse l’index inchangé au lieu d’indexer une partie de l’opération. L’opération peut être limitée à l’aide d’un pathspec, tandis que les suppressions et les conflits binaires sont traités normalement, car ils ne contiennent pas de marqueurs textuels.
Accélérer la recherche des bases de fusion
La version améliore l’algorithme de recherche des meilleurs ancêtres communs entre les commits, une opération utilisée par les fusions, les différences à trois points et les comparaisons de demandes de fusion. Git s’arrête désormais lorsqu’un des deux côtés exclusifs de la file de recherche est épuisé, car aucune nouvelle base de fusion ne peut alors apparaître.
Dans l’état d’un grand dépôt monolithique, ce changement a réduit la durée de l’opération de 0,68 seconde à 0,01 seconde. Des évaluations de productivité menées sur deux grands dépôts ont également enregistré une amélioration d’environ 70 fois pour l’un et une moyenne proche de 20 fois pour l’autre. De même, l’opération git merge-base --all v4.8 v4.9, dans un cas lié au noyau Linux, est passée de 167 441 étapes et 0,29 seconde à 3 887 étapes et 0,01 seconde.
Des reconditionnements plus petits pour les services d’hébergement
Git 2.56 a supprimé deux obstacles à l’utilisation du reconditionnement fondé sur les chemins, une technique qui regroupe les objets de fichiers proches dans l’arbre du dépôt afin d’améliorer leur compression. Lors d’un test effectué sur une copie du dépôt Fluent UI, la taille du paquet de stockage est passée de 558,5 mégaoctets avec le reconditionnement traditionnel à 164,4 mégaoctets avec --path-walk, soit une réduction d’environ 71 %.
Cette méthode est désormais compatible avec les cartes d’accessibilité et les îlots de différences, ce qui permet aux services d’hébergement d’évaluer les économies de stockage tout en conservant leurs mécanismes actuels de service et d’isolation. Elle n’est toutefois pas activée par défaut et ne constitue pas une transformation automatique de tous les dépôts.
Outils supplémentaires et améliorations pratiques
- La commande expérimentale git history drop ajoute la suppression d’un commit et la rejoue des commits qui le suivent, tout en conservant les limitations liées aux conflits, aux commits racines et aux opérations de fusion.
- La commande git refs unifie les opérations de création, de mise à jour, de suppression et de renommage des références, avec la prise en charge de la protection compare-and-swap au moyen des anciennes valeurs.
- git branch --delete-merged permet de supprimer en masse les branches fusionnées selon les branches de suivi, avec une option de prévisualisation et la protection des branches spécifiées.
- git bisect run --reset-when-found ajoute la réinitialisation automatique de l’état après la découverte du commit à l’origine de la panne.
- La commande git repack peut supprimer manuellement les objets binaires volumineux récupérés dans les clones partiels, tout en les laissant récupérables depuis le serveur de confiance si nécessaire.
- git log --follow améliore le suivi du renommage des chemins à travers un historique non linéaire et améliore également l’affichage des graphes comportant plusieurs racines.
Pourquoi cette version est-elle importante ?
La valeur pratique de Git 2.56 ne se limite pas à de nouvelles commandes : la version s’attaque à des points de friction directs dans le travail des développeurs et des gestionnaires de dépôts. Le mode git add --resolved réduit le risque d’inclure des modifications involontaires, tandis que les améliorations des bases de fusion et du reconditionnement ciblent les coûts en temps et en stockage des grands dépôts. Toutefois, certains outils restent expérimentaux ou manuels, notamment les commandes de gestion de l’historique et de nettoyage des objets dans les clones partiels. Il ne faut donc pas les considérer comme des politiques automatiques ni comme des remplacements inconditionnels des flux de travail existants.
Cette version montre que le projet Git continue d’améliorer ses performances au niveau des algorithmes et des structures internes, et pas seulement d’ajouter des commandes destinées à l’utilisateur final. Les détails de la version recommandent de consulter les notes complètes de Git 2.56 afin d’examiner les autres changements avant d’adopter les fonctionnalités expérimentales dans les environnements de production.