Ce qui se passe
Git 2.56.0 est sorti, avec des contributions de 104 personnes dont 39 nouvelles. Le billet de GitHub, signé Elijah Newren (l'auteur de merge-ort, la stratégie de fusion par défaut), en retient une option qui corrige une erreur que tout le monde a déjà commise.
git add --resolved
Pendant un merge, marquer un conflit comme résolu passe par git add. Le
raccourci habituel, git add -u, a deux travers : il indexe aussi vos
modifications locales sans lien avec le conflit, et il indexe sans broncher un
fichier où traîne encore un <<<<<<< oublié.
La nouvelle option ne considère que les chemins encore en conflit dans l'index, et les inspecte avant de toucher à quoi que ce soit :
$ git add --resolved
fatal: the following paths still have conflict markers:
recipe.txt
# on corrige recipe.txt, puis :
$ git add --resolved
$ git status --short
M notes.txt
M recipe.txtC'est tout ou rien : un seul marqueur restant dans la sélection, et rien
n'est indexé. notes.txt, modifié avant le merge, reste hors de l'index. On
peut restreindre à certains chemins ; les suppressions et conflits binaires,
sans marqueurs, passent normalement. L'option ne se combine ni avec -u ni
avec -A.
Les autres ajouts utiles
- Nettoyer les branches fusionnées d'un coup, en regardant d'abord :
git branch --delete-merged 'origin/*' 'topic-*' --dry-run. Seules les branches dont la pointe est atteignable depuis leur branche amont sont supprimées ; celles ouvertes dans un worktree ou sans amont sont ignorées, etbranch.<nom>.deleteMerged = falseen protège une. git bisect run --reset-when-found: revient au commit de départ une fois le coupable trouvé (=foundpour rester dessus).git history drop <commit>: retire un commit et rejoue ses descendants. La commande reste expérimentale et refuse les historiques avec merges.git refs create|update|delete|rename: la gestion bas niveau des références regroupée, avec comparaison-échange sur l'ancienne valeur.git repack -a --filter=blob:limit=1m --drop-filtered: un clone partiel peut rejeter les gros blobs déjà téléchargés, qu'il ira rechercher au besoin (essayer d'abord avec--dry-run).git push origin/mainsuggère désormaisgit push origin main.
Plus rapide, parfois de très loin
- Base de fusion : Git s'arrête dès qu'aucune nouvelle base ne peut plus
apparaître. Sur le noyau Linux,
git merge-base --all v4.8 v4.9passe de 167 441 étapes et 0,29 s à 3 887 étapes et 0,01 s ; sur deux gros monorepos, des gains autour de ×70 et ×20 en moyenne. - Passages quadratiques supprimés : sur un checkout de Chromium
(~500 000 entrées d'index), un
git difflimité à des chemins passe d'environ huit minutes à 0,07 s ; un dépôt à 37 815 packs ne met plus 4,5 s pour une commande appelée par l'invite du shell. - Repack par chemin (
--path-walk) : compatible désormais avec les bitmaps et les delta islands, ce qui ouvre la voie aux hébergeurs. Sur le dépôt Fluent UI, 164,4 Mo au lieu de 558,5 Mo. Pas activé par défaut.
Source : Highlights from Git 2.56, GitHub Blog, 28 septembre 2026. Notes de version complètes : RelNotes 2.56.0.