lancement d'un système de gestion décentralisé des textes sources . Git est l'un des systèmes de gestion de version les plus populaires, fiables et performants, offrant des outils flexibles pour le développement non linéaire, basés sur le branchement et la fusion de branches. Pour garantir l'intégrité de l'historique et la résistance aux modifications rétroactives, un hachage implicite de toute l'histoire précédente est utilisé dans chaque commit ; la vérification par des signatures numériques des développeurs est également possible pour certains tags et commits.
Comparé à la version précédente, la nouvelle version comprend 505 modifications, préparées avec la participation de 77 développeurs, dont 26 ont participé au développement pour la première fois. Principales :
- Des commandes expérimentales «git switch» et «git restore» ont été introduites, visant à séparer les capacités peu liées de «git checkout», telles que la manipulation de branches (changement et création) et la restauration de fichiers dans le répertoire de travail («git checkout $commit — $filename») ou directement dans la zone de staging («—staging», qui n'a pas d'équivalent dans «git checkout»). Il convient de noter qu'en revanche à «git checkout», «git restore» supprime les fichiers non suivis des répertoires restaurés («—no-overlay» par défaut).
- Une option «git merge —quit» a été ajoutée, qui arrête le processus de fusion de branches, similaire à «—abort», mais laisse le répertoire de travail intact. Cette option peut être utile si certaines des modifications apportées lors d'une fusion manuelle sont préférables sous la forme d'un commit séparé.
- Les commandes «git clone», «git fetch» et «git push» tiennent désormais compte des commits dans les dépôts associés ();
- options «git blame —ignore-rev» et «—ignore-revs-file», permettant d'ignorer les commits contenant des modifications mineures (par exemple, les corrections de formatage);
- Une option «git cherry-pick —skip» a été ajoutée pour ignorer un commit en conflit (un équivalent mémorisé de la séquence «git reset && git cherry-pick —continue»);
- Un réglage status.aheadBehind a été ajouté, fixant de manière permanente l'option «git status —[no-]ahead-behind»;
- À partir de cette version, «git log» prend en compte par défaut les modifications apportées par mailmap, de la même manière que cela se produit déjà dans git shortlog;
- L'opération de mise à jour du cache expérimental du graphe des commits (core.commitGraph) dans sa version 2.18 a été considérablement accélérée. De plus, git for-each-ref est également optimisé lors de l'utilisation de plusieurs modèles, et le nombre d'appels à auto-gc dans « git fetch —multiple » a été réduit.
- La commande « git branch —list » affiche désormais toujours le HEAD détaché en haut de la liste, quelle que soit la locale.
Source : opennet.ru
