2011-04-05 14 views
7

Necesito una forma de pasar rápidamente a la confirmación anterior y siguiente en una rama git.Git: pasar a la confirmación anterior y posterior

Para el anterior he descubierto que puedo hacer:

git reset --hard HEAD~1

Y probablemente alias que en un git prev o algo así, pero no puedo encontrar la manera de moverse "hacia arriba" a la próxima confirmación .

Y la solución ideal usaría 2 alias git prev y git next.

Gracias

+3

'git restablecer CABEZA --hard ~ 1' es destructivo ; descarta todos los contenidos de confirmación después de la segunda confirmación más reciente (por ejemplo, la confirmación más reciente y cualquier cambio en el índice y las copias de trabajo). 'git checkout' es el comando que deberías usar. – gotgenes

+1

posible duplicado de [Hacer referencia al hijo de una confirmación en Git] (http://stackoverflow.com/questions/1761825/referencing-the-child-of-a-commit-in-git) –

+2

¿Y qué quieres? ocurrir si está en una combinación de fusión (padres múltiples), o en una confirmación que es la matriz de múltiples confirmaciones? Un repositorio git es como un DAG y las ramas son solo punteros en este gráfico, así que a menos que tengas un historial lineal, 'anterior' y 'siguiente' no están necesariamente bien definidos. – hammar

Respuesta

5

Hay una configuración de alias mano por git llamada ORIG_HEAD que realiza un seguimiento de la última cabezal utilizado. Entonces, cuando hagas un reinicio de git --hard HEAD ~ 1, los datos sobre la cabeza que acabas de resetear se almacenan en ORIG_HEAD.

así prev alias git a git reset --hard CABEZA ~ 1 (o la cabeza^1) y alias git junto a git reset ORIG_HEAD --hard

+6

Esto casi lo hace, el problema es cuando intentas hacer 'git next' dos veces –

+0

Además, tu" git prev "no funciona correctamente cuando hay múltiples desarrolladores que contribuyen al repositorio. Salta al compromiso previo realizado por el mismo desarrollador. –

Cuestiones relacionadas