2012-01-07 52 views
10

He leído aquí y busqué mucho pero no encontré la respuesta, entonces ¿Hay alguna manera de cambiar entre confirmaciones como lo hace con las ramas. Digamos que tengo estos commits: a;b;c donde c es mi Última confirmación, ¿puedo volver a confirmar a? ¿O tiene que hacer un git diff y modificar los archivos manualmente?Git cambio entre commits

+1

Una rama _es_una confirmación (con un nombre simbólico, pero una confirmación sin embargo) – fge

+1

posible duplicado de [¿Cómo puedo cambiar mi repositorio git a una confirmación particular] (http://stackoverflow.com/questions/4940054/how -puede-i-switch-mi-git-repositorio-a-un-concreto-commit) –

Respuesta

12

Sólo tipo git checkout a. O tal vez más útil, git checkout -b mybranch a, para pagar a como una nueva sucursal mybranch.

Si desea revertir y bc, puede utilizar git revert, o para eliminarlos por completo de la historia de su rama actual, usted podría git rebase -i a y tirar hacia fuera.

Incluso si se va a utilizar git diff, usted no tendría que hacer nada manualmente. Consulte git format-patch, git apply y git am para automatizar la creación y aplicación de parches.

+0

así que supongo que no es possibile para cambiar entre compromete, sólo si se crea ramas y de cambiar entre ellos? ¿Estoy en lo cierto? – Uffo

+0

O puedo hacer 'git revert b (que representa la identificación de confirmación)'? – Uffo

+1

También hay 'git reset --hard'. – svick

3

Usted puede crear una rama de la revisión que desea trabajar. El número de revisión se puede ver usando

git log 

se ramifican desde la revisión anterior

git branch -f branchname rev 
+0

Esto es bueno solo en caso de que haya creado ramas, pero no cuando solo tiene la rama principal y quiere cambiar entre confirmaciones Supongo que – Uffo

+0

Puede forzar a su rama principal a apuntar a una revisión anterior. Usa el maestro como nombre de rama – Shraddha

1

Git utiliza la definición de un commitish. git define un commitish como:

commitish

Indica un nombre de cometer u objeto etiqueta. Un comando que toma un argumento cometer-ish en última instancia, quiere operar en un objeto cometer pero automáticamente desreferencias Tag objetos de ese punto a un compromiso.

Esto parece un poco incompleto, ya que las ramas también suelen tratarse como commit-ish.

Básicamente, usted puede pagar cualquier cosa que tenga un hash SHA-1.

Cuestiones relacionadas