Pregunta Bote los compromisos locales en git


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

930
2018-02-23 21:33


origen


Respuestas:


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.


1618
2018-02-23 21:38



Simplemente borre su rama maestra local y recíclela así:

git branch -D master
git checkout origin/master -b master

194
2018-02-23 21:38



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.


141
2018-02-23 21:37



Si estás usando Atlassian SourceTree aplicación, puede utilizar la opción de reinicio en el menú contextual.

enter image description here


41
2018-01-29 20:54



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.


27
2018-03-31 15:17



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


12
2018-02-11 14:06



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.


11
2018-05-27 10:07



Para confirmaciones locales que no están siendo enviadas, también puede usar git rebase -i para eliminar o aplastar una confirmación.


7
2017-10-17 21:43