rilascio del sistema di controllo distribuito delle versioni . Git è uno dei sistemi di controllo versione più popolari, affidabili e ad alte prestazioni, che offre strumenti flessibili per lo sviluppo non lineare, basati su ramificazione e fusione dei rami. Per garantire l'integrità della cronologia e la resilienza alle modifiche retroattive, viene utilizzata l'hashing implicito dell'intera cronologia precedente in ogni commit, è anche possibile la verifica tramite firme digitali degli sviluppatori per singoli tag e commit.
Rispetto alla versione precedente, la nuova versione include 505 modifiche, realizzate con la partecipazione di 77 sviluppatori, 26 dei quali hanno preso parte allo sviluppo per la prima volta. Le principali :
- Sono state introdotte le nuove comandi sperimentali «git switch» e «git restore», destinate a separare le funzionalità poco correlate di «git checkout», come la gestione dei rami (cambio e creazione) e il ripristino dei file nella directory di lavoro («git checkout $commit — $filename») o direttamente nell’area di staging («—staging», che non ha un equivalente in «git checkout»). È importante notare che, a differenza di «git checkout», «git restore» rimuove i file non tracciati dalle directory ripristinate («—no-overlay» per default).
- È stata aggiunta l'opzione «git merge —quit», che, analogamente a «—abort», interrompe il processo di fusione dei rami, mantenendo però intatta la directory di lavoro. Questa opzione può rivelarsi utile se alcune delle modifiche apportate durante una fusione manuale sono preferibili come un commit separato.
- I comandi «git clone», «git fetch» e «git push» ora considerano la presenza di commit nei repository collegati ();
- le opzioni «git blame —ignore-rev» e «—ignore-revs-file», che consentono di saltare i commit con modifiche insignificanti (ad esempio, correzioni di formattazione);
- Aggiunta l'opzione «git cherry-pick —skip» per saltare un commit in conflitto (un'analogia memorizzata della sequenza «git reset && git cherry-pick —continue»);
- Aggiunta la configurazione status.aheadBehind, che fissa l'opzione «git status —[no-]ahead-behind» in modo permanente;
- Dalla presente versione, «git log» considera per impostazione predefinita le modifiche apportate da mailmap, in modo simile a quanto avviene già in git shortlog;
- Significativamente accelerata l'operazione di aggiornamento della cache del grafo dei commit sperimentale presentata nella versione 2.18 (core.commitGraph). Inoltre, migliorato git for-each-ref in caso di utilizzo di più modelli e ridotto il numero di chiamate a auto-gc in «git fetch —multiple»;
- «git branch —list» ora mostra sempre detached HEAD all'inizio dell'elenco, indipendentemente dalla localizzazione.
Fonte: opennet.ru
