Me las arreglé para dispararme en el pie esta mañana haciendo lo siguiente:
- Empecé a trabajar en un cambio en mi proyecto.
- Realicé varias ediciones en varios archivos.
- Me di cuenta de que mi enfoque estaba mal y que necesitaba empezar de nuevo
- CD al nivel superior de mi proyecto e hice un "svn --recursive revert". para restaurar mi caja de arena local a su estado previo a los cambios.
- Aullé de horror cuando me di cuenta de que había habido una serie de otros cambios pendientes en mi caja de arena local, y los había borrado todos. (el servidor svn se había caído el viernes pasado, así que no pude registrarlos y me había olvidado de ellos durante el fin de semana)
Afortunadamente, en este caso, hice un "svn diff> temp.txt" antes de salir del trabajo el viernes, y el archivo temp.txt todavía estaba en mi disco duro, así que pude introducir ese archivo en "parche" y recuperar mi cambios perdidos.
Pero para mi referencia futura (es decir, la próxima vez que cometa el mismo error tonto) ... ¿hay alguna forma de decirle a svn que deshaga un "svn revert"? ¿Mantiene svn una copia de seguridad de las diferencias locales / no registradas en cualquier lugar?
Respuestas:
No, (absolutamente) NO .
Si le dice a Subversion que debería revertir un archivo, todos los cambios se han ido por el viento.
Solo tu memoria puede recuperarlos.
Excepción: los archivos nuevos que haya agregado solo perderán su estado "agregado", pero el archivo permanecerá en este directorio, solo se desconoce el estado ("?")
Excepción de plataforma / software: al usar TortoiseSVN en Windows, Revertir primero arroja los archivos a la Papelera de reciclaje y luego los revierte. Puede buscar en la Papelera de reciclaje para recuperar los archivos.
fuente
Hay una solución ... vaya a su papelera de reciclaje y encontrará allí la última versión del archivo eliminado. Tortuga "tirando" a la papelera de reciclaje cada archivo que revierte.
fuente
No es realmente específico de Subversion, pero si está trabajando con Eclipse, puede probar suerte en la historia local.
Ahora, algo un poco más específico de Subversion: si no desea hacer una rama por cada cambio que haga, puede mantener un par de troncales desprotegidas localmente (trunk-modif-1, trunk-modif-2 .. .). Cada "modificación" se realiza en un árbol separado y sólo necesita mantener una lista de las que corresponden a las modificaciones.
O puedes usar Git localmente pero nunca lo probé.
fuente
Recientemente cometí este error de no realizar nuevos cambios de archivo (alrededor de 10) en SVN y todos desaparecieron debido a mi tonto error. Pero lo que me salvó fue la opción de Windows "Restaurar versiones anteriores" en el menú contextual. Uf, eso fue un alivio y una lección aprendida.
fuente
No puede recuperar los archivos si está utilizando el cliente de línea de comandos svn .
Pero puede recuperarlos, si está utilizando TortoiseSVN como su cliente svn. TortoiseSVN los moverá automáticamente a su Papelera de reciclaje. Puede restaurarlos desde allí después de una reversión accidental.
Esta es una opción configurable en TortoiseSVN. Está en Configuración -> Cuadro de diálogo 1 -> Usar papelera de reciclaje al revertir.
De forma predeterminada, está marcada, lo que significa que los archivos se mueven a la papelera de reciclaje. Si lo desea (en general, no le importa desactivar esto. Si tiene un motivo, hágamelo saber también)
fuente
Si está utilizando InteliJ, entonces es una persona afortunada. En el menú superior, tiene una opción de Control de versiones, y debajo de ella encontrará la opción de historial local, donde encontrará todo el historial del archivo seleccionado, incluida toda la operación que hizo con ese archivo (actualizar, confirmar, revertir).
Buena suerte, Arkde
fuente
Además, si ha revertido su código .NET (archivos .cs, etc.) y ha creado su aplicación antes de revertir, pero después de haber realizado cambios, puede recuperar los cambios del archivo de ensamblaje utilizando cualquiera de las herramientas de reflector para ver el código.
fuente
Revertí la solución (Visual Studio + AnkhSVN) y perdí los cambios de algunos archivos. No encuentro el archivo en la papelera de reciclaje.
PERO: Recuperé mis archivos perdidos con Handy Recovery, es decir, SVN simplemente borré mis archivos al revertir.
Use cualquier software de recuperación de datos para recuperar archivos revertidos (como Handy Recovery de prueba )
fuente
Tuve mucha suerte de encontrar un registro de cambios local del archivo (Revisiones locales) en el navegador de historial en Eclipse. Había estado inspeccionando las diferencias una por una y había guardado un par de veces en el archivo antes de sobrescribirlo.
fuente
No, SVN no mantiene un registro ni una copia de seguridad (aunque hay una solución para TortoiseSVN indicada en las otras respuestas).
Pero en caso de que alguien esté examinando las respuestas y no haya notado este comentario en la pregunta del OP:
"Afortunadamente, en este caso, hice un" svn diff> temp.txt "antes de salir del trabajo el viernes, y el archivo temp.txt todavía estaba en mi disco duro, por lo que pude introducir ese archivo en" parche "y recuperar mis cambios perdidos ".
Me imagino que es un paradigma común hacer 'svn diff' ANTES de hacer un 'svn revert'. Si adquiere el hábito de hacer esto, incluso si la diferencia se hace eco en la terminal, al menos tiene una vía posible para recuperar los cambios perdidos.
fuente