eliberarea unui sistem distribuit de gestionare a codului sursă . Git este unul dintre cele mai populare, fiabile și performante sisteme de gestionare a versiunilor, oferind instrumente flexibile pentru dezvoltarea non-liniară, bazate pe ramificare și fuziune. Pentru a asigura integritatea istoricului și rezistența la modificările retroactive, se folosește o funcție implicită de hashing a întregii istorii anterioare în fiecare commit, fiind posibilă și autentificarea digitală a semnăturilor dezvoltatorilor pentru anumite tag-uri și commits.
Comparativ cu versiunea anterioară, noua versiune include 505 modificări pregătite cu contribuția a 77 de dezvoltatori, dintre care 26 au participat pentru prima dată la dezvoltare. Principalele :
- Au fost introduse comenzile experimentale „git switch” și „git restore”, menite să împartă funcționalitățile necorelate ale „git checkout”, cum ar fi manipularea ramurilor (schimbarea și crearea) și restaurarea fișierelor în directorul de lucru („git checkout $commit — $filename”) sau direct în zona de staging („—staging”, fără echivalent în „git checkout”). De remarcat, spre deosebire de „git checkout”, „git restore” elimină fișierele nesupravegheate din directoarele restaurate („—no-overlay” implicit).
- A fost adăugată opțiunea „git merge —quit”, care, similar cu „—abort”, oprește procesul de fuziune a ramurilor, dar lasă directorul de lucru neatins. Această opțiune poate fi utilă în cazul în care unele dintre modificările realizate în timpul fuziunii manuale sunt preferabile să fie realizate sub formă de commit separat.
- Comenzile „git clone”, „git fetch” și „git push” acum iau în considerare existența commit-urilor în repozitoarele corelate ();
- opțiunile „git blame —ignore-rev” și „—ignore-revs-file”, care permit să treceți peste commit-uri cu modificări nesemnificative (de exemplu, corecturi de format);
- A fost adăugată opțiunea „git cherry-pick —skip” pentru a ocoli commit-ul conflictual (analog memorabil al secvenței „git reset && git cherry-pick —continue”);
- A fost adăugată setarea status.aheadBehind, care fixează opțiunea „git status —[no-]ahead-behind” pe o bază permanentă;
- Începând cu această versiune, „git log” ia în considerare în mod implicit modificările aduse de mailmap, la fel cum se întâmplă deja în git shortlog;
- Operațiunea de actualizare a cache-ului grafului commit-urilor (core.commitGraph) prezentat în 2.18 a fost semnificativ accelerată. De asemenea, git for-each-ref s-a accelerat în cazul utilizării mai multor șabloane și numărul apelurilor auto-gc în „git fetch —multiple” a fost redus;
- „git branch —list” acum arată întotdeauna detached HEAD la începutul listei, indiferent de localizare.
Sursa: opennet.ro
