Si la situación es urgente y solo desea hacer lo que el interrogador le pidió de manera rápida y sucia , suponiendo que su proyecto se encuentre en un directorio llamado, por ejemplo, "mi proyecto":
RÁPIDO Y SUCIO : dependiendo de las circunstancias, rápido y sucio puede ser muy BUENO. Lo que mi solución aquí es NO reemplazar irreversiblemente los archivos que tiene en su directorio de trabajo con archivos recogidos / extraídos de las profundidades del repositorio git que acechan debajo de su directorio .git / usando comandos git diabólicamente inteligentes y diabólicamente poderosos, de los cuales hay muchos. NO TIENE QUE HACER TAL BUCEO EN EL MAR PROFUNDO PARA RECUPERAR lo que puede parecer una situación desastrosa, e intentar hacerlo sin la suficiente experiencia puede resultar fatal .
Copie todo el directorio y llámelo de otra manera, como "mi proyecto - copiar". Suponiendo que sus archivos de repositorio git ("repo") se encuentran en el directorio "mi proyecto" (el lugar predeterminado para ellos, en un directorio llamado ".git"), ahora habrá copiado tanto sus archivos de trabajo como sus archivos repo.
Haga esto en el directorio "mi proyecto":
.../my project $ git reset --hard [first-4-letters&numbers-of-commit's-SHA]
Esto devolverá el estado del repositorio en "mi proyecto" a lo que era cuando realizó esa confirmación (una "confirmación" significa una instantánea de sus archivos de trabajo). Todos los commits desde entonces se perderán para siempre bajo "mi proyecto", PERO ... todavía estarán presentes en el repositorio bajo "mi proyecto - copia" ya que usted copió todos esos archivos, incluidos los que están bajo ... /. Git /.
Luego tiene dos versiones en su sistema ... puede examinar o copiar o modificar archivos de interés, o lo que sea, de la confirmación anterior. Puede descartar completamente los archivos en "mi proyecto - copiar", si ha decidido que el nuevo trabajo ya que la confirmación restaurada no iba a ninguna parte ...
Lo obvio si desea continuar con el estado del proyecto sin descartar realmente el trabajo, ya que esta confirmación recuperada es cambiar el nombre de su directorio nuevamente: elimine el proyecto que contiene la confirmación recuperada (o déle un nombre temporal) y cambie el nombre de su " mi proyecto: copie el directorio "volver a" mi proyecto ". Entonces, quizás intente comprender algunas de las otras respuestas aquí, y probablemente haga otra confirmación bastante pronto.
Git es una creación brillante, pero absolutamente nadie es capaz de "recogerlo sobre la marcha": también las personas que intentan explicarlo con demasiada frecuencia asumen conocimientos previos de otros VCS [Sistemas de control de versiones] y profundizan demasiado. demasiado pronto, y cometer otros delitos, como el uso de términos intercambiables para "retirar", en formas que a veces parecen calculadas para confundir a un principiante.
Para ahorrarte mucho estrés, aprende de mis cicatrices. Tienes que leer un libro sobre Git. Recomiendo "Control de versiones con Git" . Hazlo más temprano que tarde. Si lo hace, tenga en cuenta que gran parte de la complejidad de Git proviene de la ramificación y la reemergencia: puede omitir esas partes en cualquier libro. Según su pregunta, no hay ninguna razón por la cual la gente deba cegarlo con la ciencia .
¡Especialmente si, por ejemplo, esta es una situación desesperada y eres un novato con Git!
PD: Otro pensamiento: (ahora) en realidad es bastante simple mantener el repositorio de Git en un directorio que no sea el que tiene los archivos de trabajo. Esto significaría que no tendría que copiar todo el repositorio de Git utilizando la solución rápida y sucia anterior. Vea la respuesta de Fryer usando --separate-git-dir
aquí . Sin embargo, tenga en cuenta: si tiene un repositorio de "directorio separado" que no copia, y realiza un restablecimiento completo, todas las versiones posteriores a la confirmación de restablecimiento se perderán para siempre, a menos que tenga, como debería, realiza copias de seguridad de su repositorio regularmente, preferiblemente en la nube (por ejemplo, Google Drive ) entre otros lugares.
Sobre este tema de "copia de seguridad en la nube", el siguiente paso es abrir una cuenta (gratis, por supuesto) con GitHub o (mejor en mi opinión) GitLab . A continuación, puede hacer un git push
comando regularmente para que su repositorio de Cloud esté actualizado "correctamente". Pero nuevamente, hablar de esto puede ser demasiado pronto.