2011-01-07 36 views
10

¿Es posible hacer "git revert" en Egit para revertir los cambios creando una nueva confirmación (en lugar de verificar una confirmación anterior o hacer un restablecimiento completo que no crea una nueva confirmación) respaldar los cambios)?git revertir en Egit

Esto parece una característica importante si tiene un repositorio central en caso de que alguna vez necesite deshacer los cambios que ya se han realizado allí.

¡Gracias de antemano!

Respuesta

3

Si considera esto commit from 5 days ago, llamado 'Merge' Implemente un comando de revertir '' (Shawn Pearce), parece que estará disponible pronto.

El diff are here:

public class RevertCommandTest extends RepositoryTestCase { 
     @Test 
     public void testRevert() throws IOException, JGitInternalException, 
         GitAPIException { 
       Git git = new Git(db); 

       writeTrashFile("a", "first line\nsec. line\nthird line\n"); 
       git.add().addFilepattern("a").call(); 
       git.commit().setMessage("create a").call(); 

       writeTrashFile("b", "content\n"); 
       git.add().addFilepattern("b").call(); 
       git.commit().setMessage("create b").call(); 

       writeTrashFile("a", "first line\nsec. line\nthird line\nfourth line\n"); 
       git.add().addFilepattern("a").call(); 
       git.commit().setMessage("enlarged a").call(); 
       writeTrashFile("a", 
           "first line\nsecond line\nthird line\nfourth line\n"); 
       git.add().addFilepattern("a").call(); 
       RevCommit fixingA = git.commit().setMessage("fixed a").call(); 

       writeTrashFile("b", "first line\n"); 
       git.add().addFilepattern("b").call(); 
       git.commit().setMessage("fixed b").call(); 

       git.revert().include(fixingA).call(); 

       assertTrue(new File(db.getWorkTree(), "b").exists()); 
       checkFile(new File(db.getWorkTree(), "a"), 
           "first line\nsec. line\nthird line\nfourth line\n"); 
       Iterator<RevCommit> history = git.log().call().iterator(); 
       assertEquals("Revert \"fixed a\"", history.next().getShortMessage()); 
       assertEquals("fixed b", history.next().getFullMessage()); 
       assertEquals("fixed a", history.next().getFullMessage()); 
       assertEquals("enlarged a", history.next().getFullMessage()); 
       assertEquals("create b", history.next().getFullMessage()); 
       assertEquals("create a", history.next().getFullMessage()); 
       assertFalse(history.hasNext()); 
     } 
} 
+0

supongo que confirma que no es simplemente posible todavía. ¡Gracias! – Christian

10
  • instalar la última noche de EGit (0.11.xx)
  • Historia abierta Ver
  • haga clic derecho en la confirmación que desea revertir en el momento desprotegido
  • rama
  • clic "Revertir Commit"

- Matthias

+0

Lo hice, pero no pude comprometerme y enviarlo al repositorio remoto. Quiero un compromiso más viejo específico para convertirse en HEAD ... – Lennon

+0

@Lennon, así que necesitas un reinicio – Joqus

1

que no puedo comentar debido a la baja reputación, pero yo quería añadir la última pieza de la respuesta de @Matthias Sohn por si alguien, como yo, se encuentra presente a través de la búsqueda de cómo hacer esto. Sus medidas son de aquí abajo para que no tenga que desplazarse:

  • instalar la última noche de EGit (0.11.xx)
  • Historia abierta Ver
  • haga clic en el COMMIT desea revertir en Actualmente la rama desprotegido
  • clic "Revertir Commit"

Esto añadirá una entrada en la parte superior de la vista del historial de "Revertir [confirmación anterior comentario]". Si hace clic derecho en esta nueva entrada, verá una opción para confirmar la operación Revertir. Debes hacerlo desde la vista Historial porque, como dijo @Lennon, no puedes confirmar y enviar desde el Explorador de paquetes.

La desventaja de este método es que revertirá todos los cambios en el Compromiso. Preferiría poder retrotraer solo un archivo específico que estaba en un conjunto de cambios, así que si alguien sabe de una manera de hacerlo, por favor, agrégalo.

0

archivo de clic derecho, que desea revertir -> Reemplazar -> revisión HEAD

Cuestiones relacionadas