Es muy posible que hayas querido deshacer un commit en tu proyecto porque pusheaste algo que no deberías... Tranquilo, Git permite deshacerlo todo, así que respira y mira los siguientes comandos.
Es muy posible que hayas hecho un commit en el que has añadido varios archivos, y alguno de ellos no corresponde al commit que intentas subir. Hay dos formas de deshacer este commit que está en local, en tu equipo, depende de si quieres o no mantener los cambios en los ficheros:
Si quieres mantenerlos, lanza el siguiente comando:
git reset --soft HEAD~1
El comando git reset hace que la rama actual retroceda a la revisión que le indicamos. Con el --soft le indicamos que queremos mantener los cambios que habíamos hecho en ese commit. En este caso le decimos HEAD~1 para volver a la versión inmediatamente anterior a la que estamos ahora. La de antes de hacer el commit.
Si no quieres mantener los cambios, lanza el siguiente comando:
git reset --hard HEAD~1
Al cambiar el --soft por el --hard le decimos a Git que queremos volver a la versión anterior de código sin guardar los cambios del commit que queremos revertir. Esto es como si no hubiéramos hecho nada, así que piénsalo bien antes de usarlo.
Tal vez, quieres hacer unos cambios mínimos sobre el commit que acabas de hacer antes de publicarlo.
Por ejemplo, si quieres cambiar el mensaje del commit:
git commit --amend -m "Mensaje correcto"
Si lo que quieres es añadir un fichero más, porque lo acabas de editar o porque no lo habías añadido y corresponde a ese commit, debes lanzar el siguiente comando:
git add path/of/the/file
git commit --amend -m "Mensaje para el commit"
Al añadir --amend al comando git commit hacemos ediciones sobre el últimos commit, siempre y cuando aún no esté pusheado (publicado).
En esta ocasión, no solo has hecho el commit, si no que has ejecutado el comando git push y tu error está visible para todos los puedan ver ese repositorio. En este caso, solo tienes que lanzar el comando:
git revert ID_COMMIT
Esto creará un commit con el código previo al commit que le indicas, de este modo habrás deshecho todos los cambios del commit indicado.
Además al hacerlo así, todos los cambios quedan en Git, incluida la rama que estás revirtiendo, por si te arrepientes de haber revertido los cambios.