¿Cómo me recupero de un commit –men si ya empujé el commit original?

Escenario: me comprometo, presiono al server remoto y luego confirmo algo más con –mendar. Si bash presionar nuevamente, obtendré un error porque cambié la historia que ya estaba presionada.

  1. Digamos que no me importan los cambios modificados, ¿cómo puedo deshacer esto para que mi historial se parezca al historial remoto (descartar los cambios de amen)?
  2. Digamos que me importan los cambios modificados, ¿cómo convierto el compromiso modificado en una confirmación independiente para que la historia se vea así:

    commit 1 <- commit 2 (already pushed to server) <- (originally from amended commit) 

Estoy tratando de evitar tener que usar un push -f .


Esta es una pregunta muy similar, pero hay una diferencia key: en esa pregunta, aún no ha llevado la confirmación 1 a un repository remoto. En mi pregunta, tengo.

Asumiré que su control remoto se llama origin y su twig se llama master . Ajustar según sea necesario.

Digamos que no me importan los cambios modificados

Entonces puede usar git reset --hard origin/master . Esto establece su twig actual a exactamente lo que está en el control remoto, y actualiza su índice y tree de trabajo para que coincida.

Digamos que me importan los cambios modificados

Entonces puedes usar git reset --soft origin/master . Esto establece su twig actual a exactamente lo que está en el control remoto, pero no actualiza su índice o tree de trabajo para que coincida. Luego puede usar git commit para crear una nueva confirmación que contenga los cambios agregados.