Git – Volviendo a un compromiso específico

Intento usar Git para un proyecto personal solo por el hecho de acostumbrarme, pero entré en una situación que no sé cómo poner en order …

No recuerdo cómo sucedió, creo que traté de retroceder a un compromiso, pero ahora mi idiota es un desastre. Intenté otras cosas que realmente no sé cuáles son y esto no debería haberlo hecho.

Aquí hay una pantalla de cómo se ve: enter image description here

Solo me gustaría volver al compromiso seleccionado ("Con cada nueva ola, el juego …").

Estoy seguro de que esto es realmente simple, pero me perdí con todas esas twigs y esas cosas. Entonces, si alguien pudiera decirme cómo volver a esto, no solo para mi copy de trabajo sino también para el server, estaría bien.

Gracias 🙂

Al observar esa historia, parece que usted cometió ese compromiso, lo seleccionó en otra twig y luego trató de revertirlo en ambas twigs nuevamente.

Para solucionarlo, primero te sugiero que te asegures de que todos los commits (especialmente aquellos que no están comprometidos en la parte superior) no contengan ninguna información que no quieras perder.

Después, puede usar el siguiente command para descartar todo lo demás y simplemente volver a ese compromiso. Tenga en count que esto realmente corta el tree, por lo tanto, asegúrese de que no tiene ningún dato que desee conservar.

git reset --hard 8791cc9176 

Esto restablecerá tu twig actual a esa confirmación, ignorando todo lo demás. Entonces, probablemente quiera reiniciar su maestro local allí. Después, puede eliminar su sucursal Safe usando git branch -D Safe (observe la letra mayúscula D para poder eliminar las twigs que no están fusionadas en otras twigs) para todos los demás casos, use una minúscula d para asegurarse perder información).

Dado que su control remoto también está en un estado más avanzado, es probable que desee deshacerse de esos compromisos adicionales allí también. Tenga en count que, de forma pnetworkingeterminada, no puede simplemente insert un historial anterior y replacelo en el control remoto. En su lugar, tiene que git push --force origin master usando git push --force origin master (o -f en resumen). Aunque está bien usarlo para su proyecto personal, debe saber que nunca debe hacer esto cuando trabaje con otros o cuando su repository esté a disposition del público. Esto cambiará el historial en el control remoto a un estado que no puede ser manejado automáticamente por otros usuarios que acceden al control remoto. Por lo tanto, es probable que se topen con conflictos. Es por eso que (a) siempre debes asegurarte de que lo que estás presionando es realmente bueno de empujar, y (b) siempre deshacer cosas en el control remoto agregando confirmaciones (por ejemplo, invirtiendo involuciones como ya has usado aquí).

En el estado desorderado de su repository, utiliza git checkout --detach <commit> para ir a cualquier confirmación. Por ejemplo, git checkout --detach 8791cc9 te lleva al git checkout --detach 8791cc9 "Con cada nueva ola, el juego …". git checkout se usa principalmente para ir desde la punta de una twig a otra, pero el --detach es útil para --detach cualquier confirmación.

Si necesita hacer alguna modificación a esa confirmación, necesitará crear una twig de la misma: git checkout -b new_branch <commit> .

Más información en la página de manual de git-checkout .