Considere este escenario:
- El desarrollador A realiza una confirmación: #n
- Dev. B se compromete # n + 1
- Dev. A se compromete # n + 2
- y comete # n + 3
y luego descubre que en su commit # n + 2 introdujo un defecto.
¿Cómo puede dev. ¿Deshacer sus 2 últimas confirmaciones y continuar desarrollando en la confirmación # n + 1 ?
Intentado git reset --hard HEAD~2
* , pero va a volver a dev Una de cometer #n .
commit
# n + 1, [1] Acommit
ted # n + 2, [2] fallidopush
, [3]pull
, [4]push
. Entonces, en github ahora hay una confirmación (# n + 2) y una rama de combinación 'maestra' (# n + 3).Respuestas:
Debería volver a la confirmación n + 1. Probablemente también tenga un compromiso de fusión allí. También puedes hacer un
git reset --hard <sha1_of_where_you_want_to_be>
fuente
git reflog
, pero solo puedo acceder a la información de mi reflog local, por ejemplo, confirma #n, # n + 2, # n + 3 ... pero no # n + 1git log
, perogit push -f
también se requería a, por lo que las modificaciones se reflejarían en github.--hard
significa que los cambios no confirmados que tenga actualmente se desecharán de forma permanente. Para volver a una confirmación anterior sin tirar tu trabajo, usa--soft
.