Tengo un repositorio de Git remoto y necesito revertir las últimas n
confirmaciones al olvido.
111
Puede usar git revert <commit>…
para todas las n confirmaciones y luego presionar como de costumbre, manteniendo el historial sin cambios.
O puede "retroceder" con git reset --hard HEAD~n
. Si está presionando en un repositorio público o compartido, puede divergir y romper el trabajo de otros en función de su rama original. Git te impedirá hacerlo, pero puedes usarlo git push -f
para forzar la actualización.
git reset --hard [sha1]
donde sha1 es el identificador hash de confirmación.revert
hará que sus ramas de funciones se traten como "ya" fusionadas. Eso es porque estas ramas son en realidad están fusionando. Pero los cambios se revirtieron. Solución: seleccione o revierte la confirmación de reversión .reset --hard
también hace que las ramas de funciones se traten como ya fusionadas? Mi suposición es que no lo haría (donde lorevert
haría).elmarco tiene razón ... su sugerencia es la mejor para repositorios compartidos / públicos (o, al menos, sucursales públicas). Si no fue compartido (o está dispuesto a interrumpir a otros), también puede presionar una referencia en particular:
O, si hay una confirmación SHA1 en particular (digamos 1e4f99e en forma abreviada) a la que le gustaría regresar:
fuente
Afortunadamente, pude usar la solución de Pat Notz que eliminó por completo la confirmación no deseada. Sin embargo, inicialmente recibí el error
Pero agregar la
-f
opción force ( ) sobrescribe este errorfuente
Si tiene acceso directo al repositorio remoto, siempre puede usar:
Esto funciona ya que no se intenta modificar el directorio de trabajo que no existe. Para obtener más detalles, consulte la respuesta original:
¿Cómo puedo eliminar la última confirmación en un repositorio desnudo de git?
fuente
--soft
incluso sería necesario? Probablemente podría hacer lo mismo con simplementegit reset
, sin el indicador de modo.