Tirar los commits locales en Git

Debido a una mala selección, mi repositorio Git local está actualmente cinco commits por delante del origen, y no está en buen estado. Quiero deshacerme de todos estos commits y empezar de nuevo.

Obviamente, borrar mi directorio de trabajo y volver a clonar lo haría, pero descargar todo desde GitHub de nuevo parece una exageración, y no un buen uso de mi tiempo.

Tal vez git revert es lo que necesito, pero no quiero terminar 10 commits por delante del origen (o incluso seis), incluso si esto hace que el código en sí vuelva al estado correcto. Sólo quiero fingir que la última media hora nunca sucedió.

¿Existe un comando simple que haga esto? Parece un caso de uso obvio, pero no encuentro ningún ejemplo de ello.


Tenga en cuenta que esta pregunta es específicamente sobre commits, no sobre:

  • archivos sin seguimiento
  • los cambios no organizados
  • cambios escalonados, pero no comprometidos
Solución

Si el exceso de commits sólo es visible para ti, puedes simplemente hacer git reset --hard origen/ para volver a donde está el origen. Esto restablecerá el estado del repositorio a la confirmación anterior, y descartará todos los cambios locales.

Hacer un git revert hace que los nuevos commits eliminen los viejos commits de forma que se mantenga el historial de todos.

Comentarios (11)

Simplemente borre su rama maestra local y vuelva a crearla así:

git branch -D master
git checkout origin/master -b master
Comentarios (8)

Inténtalo:

git reset --hard 

para restablecer tu cabeza a donde quieras estar. Usa gitk para ver en qué commit quieres estar. También puedes hacer reset dentro de gitk.

Comentarios (2)