Git 3.0 usará SHA-256 por defecto y exigirá Rust
Git 2.56-rc0 salió el 11 de septiembre de 2026, y la versión 3.0 que viene detrás pasa los repositorios nuevos a SHA-256, reftable y la rama main.
3 min de lectura

En cifras
- SHA-1 collision attacks the hash change cites: 2015, 2017 and 2020
- 3
- release candidate published on September 11, 2026
- 2.56
Git 2.56-rc0 se publicó el 11 de septiembre de 2026, y la versión siguiente es la que rompe cosas. El documento de cambios incompatibles de Git enumera lo que la versión 3.0 cambia para los repositorios nuevos. Usarán huellas SHA-256 en lugar de SHA-1, guardarán las referencias en formato reftable y llamarán main a la primera rama. Compilar Git exigirá además Rust. Phoronix informó de la versión candidata y sitúa Git 3.0 hacia finales de 2026.
Cada uno de esos valores por defecto solo se aplica a repositorios creados después del cambio. Los repositorios existentes siguen funcionando igual.
Los cuatro valores por defecto que cambian
| Valor por defecto | Hoy | En Git 3.0 |
|---|---|---|
| Algoritmo de huella | SHA-1 | SHA-256 |
| Almacenamiento de referencias | files | reftable |
| Nombre de la primera rama | master | main |
safe.bareRepository | all | explicit |
El cambio de huella tiene un argumento de seguridad detrás. El documento de Git cita por su nombre tres ataques contra SHA-1: SHAppening en 2015, SHAttered en 2017 y Shambles en 2020. Una colisión de huellas en un sistema de control de versiones significa que dos objetos distintos pueden reclamar la misma identidad.
Reftable sustituye la disposición antigua, en la que cada referencia era un archivo en el disco. El documento de Git da dos razones: se comporta correctamente en los sistemas de archivos de Windows y macOS que ignoran mayúsculas y minúsculas, y rinde mejor en repositorios con muchas referencias.
Que safe.bareRepository pase de all a explicit es un cambio menor, pero con un ataque real detrás. El valor actual deja que Git descubra un repositorio desnudo en cualquier punto de un árbol de directorios, incluido uno que un atacante haya dejado dentro de una copia de trabajo.
Rust pasa a ser obligatorio
El requisito de Rust llega por pasos. El documento de Git describe la secuencia: la compatibilidad con Rust se detectaba automáticamente en Git 2.52, se activó por defecto en 2.55 y pasa a ser obligatoria en 3.0.
Eso coloca a Git junto a otro software de base que da el mismo paso; Ubuntu está reemplazando los coreutils de GNU por implementaciones en Rust en su próxima versión. Para quien compile Git desde el código fuente en una plataforma poco común, una cadena de herramientas de Rust pasa a ser un requisito que planificar.
Git 3.0 también elimina funciones obsoletas desde hace años, entre ellas git pack-redundant, git whatchanged, el soporte de archivos graft y mecanismos antiguos de almacenamiento de remotos.
Qué trae la propia 2.56
Las notas de la versión 2.56 tratan sobre todo de rendimiento y fontanería. Enumerar objetos sueltos durante git status baja de complejidad cuadrática a O(n log n). El cálculo de la base de fusión se detiene antes cuando puede, algo que las notas describen como aceleraciones significativas.
Hay una superficie de comandos nueva: git refs gana subcomandos para crear, borrar, actualizar y renombrar referencias. El texto de consejo de git status ahora nombra el remoto y la rama en el git pull que sugiere cuando su rama y su upstream han divergido.
Phoronix señala que 2.56 también añade patrones de diff para Swift, que cubren atributos, modificadores, inicializadores fallables y genéricos, y endurece el motor de fusión ORT frente a árboles corruptos. Por debajo, la versión sigue quitando variables globales en favor de estado por repositorio, que es la base para bases de datos de objetos intercambiables.
Qué significa esto para los desarrolladores
La pregunta de compatibilidad no es si su Git funciona, sino si lo hace su forja. Un repositorio SHA-256 debe ser comprendido por todo lo que lo toca, incluido su proveedor de alojamiento, sus ejecutores de integración continua y cualquier herramienta que interprete identificadores de objetos. Pruebe ese camino antes de crear un repositorio con el nuevo valor por defecto.
Revise su propio código en busca de supuestos fijos sobre la longitud de la huella. Cuarenta caracteres hexadecimales llevan veinte años incrustados en scripts, expresiones regulares y columnas de bases de datos. Los nombres de objeto SHA-256 tienen sesenta y cuatro caracteres, y un varchar(40) simplemente los corta.
Reftable merece adoptarse pronto si maneja repositorios con miles de ramas o etiquetas, porque ahí es donde el formato rinde. El nombre de la rama por defecto es lo que menos importa: la mayoría de los equipos lo fijó hace años, y un repositorio creado tras el cambio se renombra con un solo comando.
Fuentes
- Git 2.56-rc0 Released With Updated Contribution Guidelines, Improvements For Swift - Phoronix
- Git 2.56 release notes - Git project
- Git BreakingChanges documentation - Git project
Artículos relacionados

Ubuntu 26.10 pasa cp, mv y rm a los coreutils en Rust
Ubuntu 26.10 entrega cp, mv y rm a Rust. Una auditoría con 113 problemas dejó esas tres fuera de 26.04 LTS; la versión estable llega el 15 de octubre.

Rust advierte a mantenedores sobre falsas videollamadas de empleo
El equipo de seguridad de Rust dice que hay atacantes que agendan videollamadas con dueños de crates bajo falsas ofertas de trabajo y luego piden instalar un códec.

Rustls 0.23.45 corrige un fallo de TLS 1.3 desde 2024
Las versiones 0.23.13 a 0.23.44 aceptaban mensajes de saludo TLS 1.3 en el nivel de cifrado equivocado, un fallo introducido en septiembre de 2024.