lanzamiento del sistema distribuido de control de versiones . Git es uno de los sistemas de control de versiones más populares, confiables y de alto rendimiento, que ofrece herramientas flexibles para el desarrollo no lineal, basadas en la ramificación y la fusión de ramas. Para garantizar la integridad de la historia y la resistencia a cambios retrospectivos, se utiliza un hash implícito de toda la historia previa en cada commit, y también es posible verificar digitalmente las firmas de los desarrolladores de etiquetas y commits individuales.
Comparado con la versión anterior, se han incluido 505 cambios en esta nueva versión, preparados con la participación de 77 desarrolladores, de los cuales 26 participaron por primera vez en el desarrollo. Principales :
- Se han presentado los comandos experimentales «git switch» y «git restore», diseñados para dividir las funciones poco relacionadas de «git checkout», tales como la manipulación de ramas (cambio y creación) y la restauración de archivos en el directorio de trabajo («git checkout $commit — $filename») o directamente en el área de staging («—staging», que no tiene un análogo en «git checkout»). Cabe destacar que, a diferencia de «git checkout», «git restore» elimina archivos no rastreados de los directorios restaurados («—no-overlay» por defecto).
- Se ha añadido la opción «git merge —quit», que, al igual que «—abort», detiene el proceso de fusión de ramas, pero deja intacto el directorio de trabajo. Esta opción puede ser útil si algunos de los cambios realizados durante una fusión manual preferiblemente deben ser registrados como un commit separado.
- Los comandos «git clone», «git fetch» y «git push» ahora tienen en cuenta la existencia de commits en los repositorios relacionados ();
- las opciones «git blame —ignore-rev» y «—ignore-revs-file», que permiten omitir commits que contengan cambios insignificantes (por ejemplo, arreglos de formato);
- Se ha añadido la opción «git cherry-pick —skip» para omitir el commit conflictivo (un análogo recordado de la secuencia «git reset && git cherry-pick —continue»);
- Se ha añadido la configuración status.aheadBehind, que fija la opción «git status —[no-]ahead-behind» de manera permanente;
- Desde esta versión, «git log» tiene en cuenta por defecto los cambios realizados en mailmap, de manera similar a cómo ya sucede en git shortlog;
- Se ha acelerado significativamente la operación de actualización del caché del gráfico de commits experimental introducido en 2.18 (core.commitGraph). También se ha acelerado git for-each-ref en caso de usar múltiples patrones y se ha reducido el número de llamadas a auto-gc en «git fetch —multiple»;
- «git branch —list» ahora siempre muestra el HEAD separado al principio de la lista, independientemente de la configuración regional.
Fuente: opennet.ru
