Si comete 4 y 5 son sólo en su repositorio y no han sido empujado o tirado por cualquier otro repositorio, puede simplemente:
git restablecer SHA1_HASH_OF_COMMIT_3 --hard
Usted puede encontrar el hash SHA1 de una confirmación usando git log
o puede usar técnicas de nomenclatura más avanzadas, consulte git help rev-parse
en particular la sección 'ESPECIFICAR REVISIONES'.
El uso de este comando dejará las confirmaciones 4 y 5 como inalcanzables desde la punta de la rama. Sin embargo, las confirmaciones no se perderán, ya que esas confirmaciones se mantienen en el reflog de la sucursal. Puede usar git reflog
para identificar una confirmación inalcanzable. La restauración se puede hacer con otra git reset --hard
. Esta página here lo describe bastante bien.
Se recomienda que ejecute git gc
de forma regular; algunos comandos también hacen esto automáticamente. Esto esencialmente realiza 'tareas domésticas' en el repositorio, como "comprimir revisiones de archivos (para reducir el espacio en disco e incrementar el rendimiento) y eliminar objetos inalcanzables". Los objetos inalcanzables se eliminan del repositorio después de (un valor predeterminado de) 30 días. Esto se puede cambiar usando la opción de configuración gc.reflogExpireUnreachable
.
Iría con revertir si ha enviado a un repositorio público. de lo contrario, cualquiera de las otras opciones está bien. – xenoterracide