Debido a una mala selección de cerezas, mi repositorio git local actualmente tiene 5 compromisos antes del origen, y no está en buen estado. Quiero deshacerme de todos estos commits y comenzar de nuevo.
Obviamente, eliminar mi directorio de trabajo y volver a clonarlo lo haría, pero descargar todo de Github nuevamente 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 se compromete antes del origen (o incluso 6), incluso si logra que el código vuelva al estado correcto. Solo quiero fingir que la última media hora nunca sucedió.
¿Hay un comando simple que hará 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 confirma, no acerca de:
- archivos sin seguimiento
- cambios sin escena
- cambios escalonados pero no confirmados
Si sus excesos de compromisos solo son visibles para usted, puede hacer git reset --hard origin/<branch_name>
para regresar a donde está el origen
Haciendo un git revert
hace nuevo se compromete a eliminar antiguo se compromete de una manera que mantiene la historia de todos cuerda.
Simplemente borre su rama maestra local y recíclela así:
git branch -D master
git checkout origin/master -b master
Tratar:
git reset --hard <the sha1 hash>
para reiniciar tu cabeza a donde quieras estar. Usa gitk para ver en qué compromiso quieres estar. También puedes restablecer en gitk.
Si estás usando Atlassian SourceTree aplicación, puede utilizar la opción de reinicio en el menú contextual.

En su intento de sucursal:
git reset --hard origin/<branch_name>
Valide la inversión (al estado, sin compromisos locales), usando "git log
"o"git status
"por lo tanto.
Eliminar la confirmación más reciente:
git reset --hard HEAD~1
Elimine la confirmación más reciente, sin destruir el trabajo que ha realizado:
git reset --soft HEAD~1
Para ver / obtener la identificación sha1 de la confirmación que desea volver también
gitk --all
Para retroceder a ese compromiso
git reset --hard sha1_id
!Nota. Se eliminarán todas las confirmaciones que se realizaron después de esa confirmación (y todas las modificaciones al proyecto). Así que primero mejor clonar el proyecto a otra rama o copiar a otro directorio.
Para confirmaciones locales que no están siendo enviadas, también puede usar git rebase -i
para eliminar o aplastar una confirmación.