Git 2.50 ya está aquí y trae consigo mejoras técnicas bastante útiles, especialmente para quienes trabajan con repositorios grandes o hacen cosas avanzadas con Git.
Aquí te explico los cambios más interesantes de forma sencilla.
Mejor gestión de cruft packs
Git ahora facilita agrupar y limpiar objetos innecesarios (los que ya no se usan en el repositorio). Antes era confuso y lento, pero con una nueva opción (--combine-cruft-below-size), se pueden combinar esos paquetes sin tantos problemas ni errores. También han corregido un fallo que eliminaba cosas demasiado pronto.
Bitmaps para mega repositorios (todo más rápido)
Se ha mejorado el manejo de los bitmaps en índices multi-pack. Ahora puedes tener capas de índices y bitmaps que ayudan a que Git sepa rápidamente qué está conectado a qué, sin tener que rehacer todo cada vez. Sigue siendo experimental, pero tiene muy buena pinta.
Adiós al viejo motor de merge “recursive”
El nuevo motor ORT, que ya venía siendo el predeterminado, ha sustituido por completo al viejo “recursive”. Es más rápido, más limpio y ahora además puede indicarte si dos ramas se pueden fusionar sin crear objetos nuevos innecesarios.
git cat-file más inteligente
Si usas comandos de bajo nivel como git cat-file, ahora puedes filtrar objetos directamente (por ejemplo, sólo árboles). También eliminaron una opción rara que permitía tipos de objeto inventados, que ya casi nadie usaba.
git maintenance hace más cosas
El comando git maintenance ahora puede encargarse de limpiar referencias antiguas, eliminar trabajo temporal y controlar mejor cómo se empaquetan los objetos sueltos.
Nuevo comando para borrar reflogs
Antes tenías que usar un truco raro para borrar todo el historial de cambios de una rama. Ahora existe git reflog delete y hace justo eso, sin complicaciones.
Mejoras internas con las referencias
Git ahora procesa las referencias más rápido gracias a nuevas optimizaciones, como no tener que verificar cada parte del nombre una por una. Son mejoras técnicas, pero hacen que muchas operaciones sean más ágiles.
Nuevas opciones para conexiones lentas
Git ahora te permite ajustar cómo maneja las conexiones lentas o inestables a nivel de TCP, con nuevas configuraciones (http.keepAliveIdle, etc.). Ideal si trabajas en redes complicadas.
Menos Perl en el código
Git sigue alejándose de Perl. Muchas partes del código de prueba y herramientas internas ya no dependen de este lenguaje, lo cual hace el proyecto más ligero y mantenible.
Cambio visual en git rebase -i
Pequeño cambio pero útil: los mensajes de los commits ahora aparecen comentados en la pantalla del rebase interactivo, para evitar confusiones. Así sabes que están ahí solo como guía.
Clonar con bundles ahora es más rápido
Si clonas usando .bundle (un tipo de paquete), Git ahora le dice al servidor todo lo que ya tiene, no solo las ramas. Así se descarga menos información y todo va más rápido.
git add -p más amigable con sparse checkouts
Si usas sparse checkout (solo una parte del repositorio), ahora puedes usar git add -p o git add -i sin que Git intente cargar todo el índice. Más rápido y cómodo.
Preguntas frecuentes (FAQ) de Git 2.50 y sus novedades
¿Qué es la mejora en la gestión de cruft packs?
Git ahora permite agrupar y limpiar objetos innecesarios de forma más sencilla con la opción --combine-cruft-below-size, evitando eliminar cosas demasiado pronto.
¿Qué son los bitmaps para mega repositorios?
Mejoras en el manejo de bitmaps en índices multi-pack que aceleran las consultas sobre repositorios grandes, aunque aún está en fase experimental.
¿Qué pasó con el motor de merge “recursive”?
El nuevo motor ORT ha sustituido por completo al antiguo “recursive”, siendo más rápido y eficiente, y evitando crear objetos innecesarios al fusionar ramas.
¿Qué novedades tiene el comando git cat-file?
Ahora puedes filtrar objetos directamente por tipo (por ejemplo, solo árboles) y eliminaron opciones poco usadas para tipos de objeto inventados.
️ ¿Qué mejoras trae git maintenance?
Puede limpiar referencias antiguas, eliminar trabajo temporal y controlar mejor la empaquetación de objetos sueltos.
️ ¿Cómo borrar reflogs fácilmente?
Con el nuevo comando git reflog delete, puedes borrar el historial de cambios de una rama sin trucos complicados.
⚡ ¿Qué mejoras internas tiene Git en las referencias?
Git procesa las referencias más rápido, evitando verificar cada parte del nombre individualmente, lo que agiliza varias operaciones.
¿Qué opciones hay para conexiones lentas?
Nuevas configuraciones para ajustar el manejo de conexiones TCP lentas o inestables, como http.keepAliveIdle, mejorando la experiencia en redes difíciles.
¿Por qué Git usa menos Perl?
Muchas partes del código de pruebas y herramientas internas ya no dependen de Perl, haciendo el proyecto más ligero y fácil de mantener.
✏️ ¿Qué cambió en git rebase -i?
Los mensajes de los commits aparecen comentados durante el rebase interactivo, evitando confusiones y dejando claro que son solo guías.
¿Cómo mejoró la clonación con bundles?
Git ahora informa al servidor de todo lo que ya tiene localmente, no solo las ramas, haciendo que las descargas sean más rápidas.
¿Qué mejoras hay en git add -p con sparse checkouts?
Ahora puedes usar git add -p o git add -i sin cargar todo el índice en repositorios con sparse checkout, haciéndolo más rápido y cómodo.