Mueve los commits de master a una twig usando git

Intento aprender a usar Git de manera efectiva y me pregunto cómo debo (¿buenas prácticas / malas prácticas?) Resolver el siguiente caso:

Supongamos que tengo la siguiente cadena de confirmaciones en el maestro:

  • Compromiso inicial
  • Commit 1
  • Compromiso 2
  • Compromiso 3

Entonces me doy count de que lo que se hizo en los dos últimos commits está completamente equivocado y necesito comenzar desde el Commit 1 nuevamente. Preguntas:

  • ¿Cómo debo hacer eso?
  • ¿Puedo mover Commit 2 y 3 a una sucursal separada para mantener como reference futura (digamos que no fueron tan malos después de todo) y continuar trabajando desde Commit 1 en master?

git branch tmp # mark the current commit with a tmp branch git reset --hard Commit1 # revert to Commit1 

La respuesta de SO " ¿Cuál es la diferencia entre 'git reset' y 'git checkout' en git? " Es bastante instructivo para ese tipo de operación

texto alternativo

Un git reset --hard HEAD~2 haría lo mismo (sin necesidad de recuperar SHA1 para Commit1 primero).

Como Commit2 y Commit3 todavía son reference por un Git ref (aquí una twig), aún puede volver a ellos cuando lo desee ( git checkout tmp ).


En realidad, Darien menciona en los comentarios (con respecto a mover Commit2 y Commit3 a otra twig):

Accidentalmente comprometido con la twig incorrecta, esto me permitió moverlo, ¿verdad?

 git checkout correctbranch git rebase tmp git branch -d tmp 

Esto funciona aquí ya que la twig inicial se ha reiniciado a Commit1 , lo que significa que git rebase tmp volverá a reproducir cada confirmación después de Commit1 (por lo tanto, aquí Commit2 y Commit3 ) a la nueva ' correctbranch '.