2011-11-28 30 views
11

Quería ver (y no modificar) las versiones anteriores de algunos archivos en mi repositorio, así que fui y revirtí esos archivos. Ahora intento recuperar esos archivos a la versión más reciente para que coincidan con todos los otros archivos en mi copia de trabajo, pero cuando actualicé la carpeta, nada cambia.TortoiseSVN - Cómo deshacer una reversión

¿Es posible deshacer una reversión? Copié y pegué las versiones más nuevas de esos archivos en otra parte, para que no se pierdan por completo, pero creo que hay una manera más fácil que simplemente mover esos archivos al directorio que contiene mi copia de trabajo.

Gracias de antemano.

+0

Ver respuesta detallada y el procedimiento aquí: http://stackoverflow.com/questions/1554278/temporarily-put-away-uncommited-changes-in-subversion-a-la-git-stash –

Respuesta

9

supongo que utilizó el Revertir a esta revisión menú contexto en el Mostrar registro diálogo. A pesar del nombre, en realidad no realiza una operación de reversión, al menos de la manera en que Subversion entiende el término. Lo que realmente hace es una fusión inversa de los cambios de revisión en su copia de trabajo. Entonces ahora tiene cambios no guardados en su copia de trabajo y Subversion intenta preservarlos cuando actualiza. Puede verificarlo desde el diálogo "Comprobar modificaciones": esos elementos deben aparecer como "Modificados".

Si ese es el caso, puede descartar los cambios locales de la manera habitual: el menú contextual "Revertir" en su copia de trabajo . Esta vez, hará una verdadera operación de "revertir".

La próxima vez que desee inspeccionar versiones anteriores de un árbol de directorios, puede usar el menú contextual "Actualizar elemento para revisión" en el diálogo de registro. Hará una actualización de SVN que se puede deshacer fácilmente.

+0

Sí, eso es lo que hice; No me di cuenta de que la terminología era diferente. Seguí tus instrucciones y obtuve mis archivos más recientes en mi directorio de trabajo. ¡Gracias por tu ayuda! Sin embargo, no estoy muy seguro de lo que quiere decir con "fusión inversa". ¿Puedes explicar lo que eso significa? – Emily

+0

A [merge] (http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.branchmerge.basicmerging) es la operación de copiar cambios realizados en una rama en otra rama. Es * revertir * cuando no aplica los cambios para obtener la función sino su opuesto (para eliminar la función). –

+0

Lo sentimos, pero "Volver a esta revisión" realmente hace una fusión inversa. Sin embargo, una "actualización de esta revisión" no lo hace. – Stefan

0

No. Revertir descarta los cambios locales que el repositorio nunca escuchó, por lo que no hay forma de restaurarlos desde allí. TortoiseSVN probablemente podría mantener copias de seguridad para usted en el lado del cliente, pero no es así.

Tenga en cuenta que esto solo significa que nunca volverá a realizar modificaciones locales que no fueron confirmadas, un comando Actualizar aún debería obtener la versión más reciente del repositorio, no las versiones anteriores que había retirado explícitamente antes.

+0

Gracias para su respuesta.Sin embargo, no hice ningún cambio local cuando revertí esos archivos. Digamos que mi carpeta estaba en la versión 100 (que es la última versión en el repositorio), y revertí algunos archivos a la versión 50. Así que ahora quiero que esos archivos en mi copia de trabajo vuelvan a la versión 100 (y a menos que sea un malentendido algo, la versión 100 de esos archivos todavía está en el repositorio). No he cometido nada durante este proceso. ¿No hay forma de volver a la versión 100 de estos archivos porque los revertí a la versión 50 anterior? – Emily

+0

Bien, entonces, en la terminología del SVN, ¿no "revertiste", "actualizaste" (sí, no era exactamente idéntico al uso diario) a un número de revisión específico usando el diálogo TortoiseSVN -> Actualizar a revisión ...? – themel

+0

Sí, no me di cuenta de que la terminología del SVN y la terminología de TortoiseSVN diferían un poco. Lo que hice para cada archivo fue TortoiseSVN -> Mostrar registro -> Volver a esta revisión, como Alvaro G. Vicario describió en otra respuesta. ¡Gracias por ayudar! – Emily

2

Con SVN solo existe la copia de trabajo en su equipo local y el repositorio en el servidor. Al utilizar revertir, ha reemplazado el contenido de su copia de trabajo local con el contenido del servidor, y no hay otro lugar donde SVN guarde una copia de esos archivos.

Según su IDE, es posible que pueda restaurar sus cambios. Eclipse, por ejemplo, realiza un seguimiento del historial local de cada archivo en su espacio de trabajo.

Pero si quiere obtener un control de versión mucho más flexible, eche un vistazo a Git o Mercurial.

+0

¡Mencionar esta característica de Eclipse me ha salvado de una buena parte de la repetición! – leokhorn

7

Presione Ctrl + Z en el directorio del proyecto si no se ha reiniciado el equipo

+0

Este me ayudó. El proyecto fue abierto en Visual Studio, ¡así que pude deshacer de manera selectiva las reversiones! –

+0

Nunca supo que eso fuera posible. Me ahorro mucho tiempo. ¡Gracias! –

0

Para deshacer Revert:
1. Haga clic ->TortoiseSVN -> Recuperar
2. Haga clic derecho ->SVN actualización

Cuestiones relacionadas