lançamento do sistema de controle distribuído de textos-fonte . O Git é um dos sistemas de controle de versão mais populares, confiáveis e de alto desempenho, oferecendo ferramentas flexíveis para desenvolvimento não linear, baseadas em ramificações e mesclagens de branches. Para garantir a integridade do histórico e a resistência a alterações retroativas, utiliza-se uma hash implicita de todo o histórico anterior em cada commit, além de ser possível verificar digitalmente as assinaturas dos desenvolvedores em tags e commits específicos.
Comparado com a versão anterior, a nova versão contém 505 alterações, desenvolvidas por 77 desenvolvedores, dos quais 26 participaram do desenvolvimento pela primeira vez. Principais :
- Introduzidos os comandos experimentais «git switch» e «git restore», destinados a separar funcionalidades pouco relacionadas de «git checkout», como manipulação de branches (alternância e criação) e recuperação de arquivos no diretório de trabalho («git checkout $commit — $filename») ou diretamente na staging area («—staging», que não tem equivalente em «git checkout»). Vale ressaltar que, ao contrário de «git checkout», «git restore» remove arquivos não rastreados dos diretórios restaurados («—no-overlay» por padrão).
- Adicionada a opção «git merge —quit», que, assim como «—abort», interrompe o processo de mesclagem de branches, mas deixa o diretório de trabalho inalterado. Esta opção pode ser útil caso algumas alterações feitas durante uma mesclagem manual sejam preferíveis em forma de um commit separado.
- Os comandos «git clone», «git fetch» e «git push» agora consideram a presença de commits em repositórios vinculados ();
- as opções «git blame —ignore-rev» e «—ignore-revs-file», que permitem ignorar commits com alterações insignificantes (por exemplo, correções de formatação);
- Adicionada a opção «git cherry-pick —skip» para ignorar um commit conflitante (uma alternativa memorizada à sequência «git reset && git cherry-pick —continue»);
- Adicionada a configuração status.aheadBehind, que fixa a opção «git status —[no-]ahead-behind» de forma permanente;
- A partir desta versão, «git log» considera por padrão as alterações feitas pelo mailmap, da mesma forma que já acontece no git shortlog;
- A operação de atualização do cache experimental do grafo de commits (core.commitGraph) apresentado na versão 2.18 foi significativamente acelerada. Também foi acelerado o comando git for-each-ref ao utilizar vários modelos e reduzido o número de chamadas ao auto-gc em «git fetch —multiple»;
- «git branch —list» agora sempre mostra o HEAD destacado no início da lista, independentemente da localidade.
Fonte: opennet.ru
