2011-05-27 27 views
11

No puedo hacer muchas cosas con git y quiero eliminar una confirmación de mi repositorio, porque he cargado cosas incorrectas.Git eliminar commit raíz

He utilizado git revert <the_commit> pero como la confirmación es root y no puedo eliminarla. fatal: No se puede revertir una confirmación raíz

¿Qué hacer en ese caso?

Por favor, no me des enlaces a otros temas aquí, los leo y no entiendo qué hacer, necesito un ejemplo básico sobre la eliminación de algunas confirmaciones.

Respuesta

4

Para eliminar una raíz cometer, simplemente tiene que eliminar todas las ramas (y etiquetas) desde las que se puede acceder.

Esto se puede hacer con git branch -D branch-name. (Deberá verificar primero otra rama que no se refiera a esta confirmación raíz, ya que no puede eliminar la rama actual, creo).

Si desea conservar otras confirmaciones en esta rama y solo eliminarlas la raíz, git filter-branch es mejor, vea la respuesta de Greg.

18

Puede hacerlo usando git filter-branch. Primero, identifique la ID de confirmación en la raíz que desea eliminar. Lo representaré con <the_commit>. A continuación, ejecute git filter-branch usando --parent-filter y un comando sed que tijeras de ese padre:

git filter-branch --parent-filter "sed 's/-p <the_commit>//'" HEAD 

He aquí una transcripción de un ejemplo he intentado:

$ git log 
commit 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8 
Author: Greg Hewgill <[email protected]> 
Date: Fri May 27 20:54:27 2011 +1200 

    three 

commit a8a410d2361824cbd518a48225e9402a691be93f 
Author: Greg Hewgill <[email protected]> 
Date: Fri May 27 20:54:17 2011 +1200 

    two 

commit 3171d512d98f6bc5f3c2469312930c0d32d3aa07 
Author: Greg Hewgill <[email protected]> 
Date: Fri May 27 20:54:00 2011 +1200 

    one 
$ git filter-branch --parent-filter "sed 's/-p 3171d512d98f6bc5f3c2469312930c0d32d3aa07//'" HEAD 
Rewrite 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8 (3/3) 
Ref 'refs/heads/master' was rewritten 
$ git log 
commit 489ec1ee20e0dd20cd835ceebf157f628cd75a44 
Author: Greg Hewgill <[email protected]> 
Date: Fri May 27 20:54:27 2011 +1200 

    three 

commit a6f5ee410c9ea4fca6fbff265149b7fc555241eb 
Author: Greg Hewgill <[email protected]> 
Date: Fri May 27 20:54:17 2011 +1200 

    two 
$