Respuestas:
git reset --hard HEAD~1
git push -f <remote> <branch>
(Ejemplo empuje: git push -f origin bugfix/bug123
)
Esto deshacerá la última confirmación y empujará el historial actualizado al control remoto. Debe pasar el -f
porque está reemplazando el historial ascendente en el control remoto.
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:
git revert 364705c
luego envíelo al control remoto como de costumbre:
git push
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.
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:
git log
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:
git reset --hard your_that_copied_string_but_without_quote_mark
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:
git push -f
deberías ver como
"advertencia: push.default no está establecido; su valor implícito ha cambiado en ..... ... Total 0 (delta 0), reutilizado 0 (delta 0) ... ... your_branch_name -> master (actualización forzada) ".
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 .
Puedes hacer un rebase interactivo:
git rebase -i <commit>
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
Intenta usar
git reset --hard <commit id>
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
git push -f <remote> <branch>
git reset --hard <the-sha-you-want-to-return-to>
.