rilascio del sistema di controllo distribuito delle versioni . Git è uno dei sistemi di controllo delle versioni più popolari, affidabili e ad alte prestazioni, che offre strumenti flessibili per lo sviluppo non lineare basati su branching e merging. Per garantire l'integrità della cronologia e la resilienza alle modifiche retroattive, viene utilizzato un hashing implicito dell'intera storia precedente in ciascun commit, e è anche possibile la verifica delle firme digitali degli sviluppatori di singoli tag e commit.
Rispetto alla versione precedente, nella nuova versione sono stati inclusi 505 cambiamenti, preparati con la partecipazione di 77 sviluppatori, di cui 26 hanno partecipato per la prima volta allo sviluppo. Le principali :
- Sono stati presentati i comandi sperimentali «git switch» e «git restore», progettati per separare tra loro funzionalità poco correlate di «git checkout», come la manipolazione dei rami (commutazione e creazione) e il recupero di file nella directory di lavoro («git checkout $commit — $filename») o immediatamente nell'area di staging («—staging», non ha un analogo in «git checkout»). È importante notare che, a differenza di «git checkout», «git restore» rimuove file non tracciati dalle directory ripristinate («—no-overlay» per impostazione predefinita).
- È stata aggiunta l'opzione «git merge —quit», che, analogamente a «—abort», interrompe il processo di fusione dei rami, ma mantiene la directory di lavoro intatta. Questa opzione può rivelarsi utile nel caso in cui alcune delle modifiche apportate durante una fusione manuale siano più appropriate per essere presentate come un commit separato.
- I comandi «git clone», «git fetch» e «git push» ora tengono conto dei commit nei repository associati ();
- le opzioni «git blame —ignore-rev» e «—ignore-revs-file», che consentono di saltare i commit che contengono modifiche insignificanti (come la correzione di formattazione);
- È stata aggiunta l'opzione «git cherry-pick —skip» per saltare un commit conflittuale (l'analogo memorizzato della sequenza «git reset && git cherry-pick —continue»);
- È stata aggiunta la configurazione status.aheadBehind, che fissa l'opzione «git status —[no-]ahead-behind» su base permanente;
- Con questa versione, «git log» per impostazione predefinita considera le modifiche apportate da mailmap, analogamente a quanto già avviene in git shortlog;
- È stata notevolmente accelerata l'operazione di aggiornamento della cache sperimentale del grafo dei commit presentata in 2.18 (core.commitGraph). Inoltre, è stata accelerata l'operazione git for-each-ref quando si utilizzano più modelli e il numero di chiamate a auto-gc in 'git fetch —multiple' è stato ridotto;
- 'git branch —list' ora mostra sempre HEAD staccato all'inizio dell'elenco, indipendentemente dalla locale.
Fonte: opennet.ru
