He realizado git commit
seguido de a git push
. ¿Cómo puedo revertir ese cambio en los repositorios locales y remotos?
$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date: Tue Jun 11 12:24:23 2011 -0700
git
git-push
git-commit
Miguel
fuente
fuente
git reset --hard <the-sha-you-want-to-return-to>
.git log --decorate --oneline
para averiguar a dónde apunta su CABEZA.git reset HEAD~1
si no desea que se vayan sus cambios (cambios no organizados). Cambiar, comprometerse y presionar de nuevogit push -f [origin] [branch]
En general, realice una confirmación "inversa", utilizando:
luego envíelo al control remoto como de costumbre:
Esto no eliminará la confirmación: realiza una confirmación adicional que deshace lo que hizo la primera confirmación. Cualquier otra cosa, no es realmente segura, especialmente cuando los cambios ya se han propagado.
fuente
git reset
solo se acepta si aún no ha enviado los cambios al servidor.En primer lugar, relájate.
"Nada está bajo nuestro control. Nuestro control es mera ilusión", "Errar es humano"
Entiendo que involuntariamente presionaste tu código
remote-master
. ESTO va a estar bien.1. Al principio, obtenga el
SHA-1
valor de la confirmación que está intentando devolver, por ejemplo, comprometerse con la rama maestra. ejecuta esto:verá un montón de 'f650a9e398ad9ca606b25513bd4af9fe ...' como cadenas junto con cada una de las confirmaciones. copie ese número de la confirmación que desea devolver .
2. Ahora, escriba el siguiente comando:
debería ver un mensaje como "HEAD is now at". Estás en claro. Lo que acaba de hacer es reflejar ese cambio localmente.
3. Ahora, escriba el siguiente comando:
deberías ver como
Ahora, ya está todo claro. Verifique el maestro con "git log" nuevamente, su fixed_destination_commit debería estar en la parte superior de la lista.
De nada (de antemano;))
ACTUALIZAR:
Ahora, los cambios que había hecho antes de que comenzaran todos estos, ahora se han ido. Si desea recuperar esos trabajos duros nuevamente, es posible. Gracias a los comandos git reflog y git cherry-pick .
Para eso, sugeriría seguir este blog o esta publicación .
fuente
git reset HEAD~1
si no desea que se vayan sus cambios (cambios no organizados). Cambiar, comprometerse y presionar nuevamentegit push -f [origin] [branch]
fuente
Puedes hacer un rebase interactivo:
Esto abrirá su editor predeterminado. Simplemente elimine la línea que contiene la confirmación que desea eliminar para eliminar esa confirmación.
Por supuesto, también necesitará acceso al repositorio remoto para aplicar este cambio allí.
Ver esta pregunta: Git: eliminar confirmaciones seleccionadas del repositorio
fuente
Intenta usar
Tenga en cuenta: aquí la identificación de confirmación será la identificación de la confirmación a la que desea acceder, pero no la identificación que desea restablecer. Este fue el único punto donde también me quedé atrapado.
luego empujar
fuente
Alternativamente:
Forzar la rama maestra del repositorio remoto de origen al padre de la última confirmación
fuente