tortoise revertir español desvincular comandos carpeta cambios svn

revertir - tortoise svn server



¿Cómo puedo eliminar todos mis cambios en mi directorio de trabajo SVN? (10)

Tengo un directorio de trabajo SVN. Hice algunos cambios en ese directorio, y se muestra en svn status . Pero, ¿hay alguna forma de eliminar todos mis cambios allí y simplemente obtener todo desde el tronco usando la línea de comando?


Ninguna de las respuestas aquí era exactamente lo que quería. Esto es lo que se me ocurrió:

# Recursively revert any locally-changed files svn revert -R . # Delete any other files in the sandbox (including ignored files), # being careful to handle files with spaces in the name svn status --no-ignore | grep ''^/?'' | / perl -ne ''print "$1/n" if $_ =~ /^/S+/s+(.*)$/'' | / tr ''/n'' ''/0'' | xargs -0 rm -rf

Probado en Linux; puede funcionar en Cygwin, pero se basa (creo) en una extensión específica de GNU que permite que xargs se divida en base a ''/0'' lugar de espacios en blanco.

La ventaja del comando anterior es que no requiere ninguna actividad de red para restablecer el sandbox. Obtienes exactamente lo que tenías antes y pierdes todos tus cambios . (descargo de responsabilidad antes de que alguien me culpa por este código destruyendo su trabajo) ;-)

Utilizo este script en un sistema de integración continua en el que quiero asegurarme de que se realice una compilación limpia después de ejecutar algunas pruebas.

Editar : no estoy seguro de que esto funcione con todas las versiones de Subversion. No está claro si el comando svn status siempre está formateado de forma coherente. Úselo bajo su propio riesgo, como con cualquier comando que use dicho comando manta rm .


Puede usar el siguiente comando para revertir todos los cambios locales:

svn st -q | awk ''{print $2;}'' | xargs svn revert


Si está en Windows, el siguiente ciclo for revertirá todos los cambios no realizados realizados en su espacio de trabajo:

for /F "tokens=1,*" %%d in (''svn st'') do ( svn revert "%%e" )

Si desea eliminar todos los cambios no confirmados y todos los objetos no versionados, requerirá 2 loops:

for /F "tokens=1,*" %%d in (''svn st'') do ( svn revert "%%e" ) for /F "tokens=1,*" %%d in (''svn st'') do ( svn rm --force "%%e" )


Si no tiene cambios, siempre puede ser realmente minucioso y perezoso y ...

rm -rf * svn update

Pero, realmente no, ¡ no hagas eso a menos que estés realmente seguro de que la opción nuke-from-space es lo que quieres! Esto tiene la ventaja de anular también todos los cruft de compilación, archivos temporales y cosas que SVN ignora.

La solución más correcta es usar el comando de revertir:

svn revert -R .

El -R hace que la subversión se repita y revierte todo en y debajo del directorio de trabajo actual.


Utilicé una combinación de respuestas de otras personas para llegar a esta solución:

Revertir cambios SVN locales normales

svn revert -R .

Elimine cualquier otro cambio y admita la eliminación de archivos / carpetas con espacios, etc.

svn status --no-ignore | grep -E ''(^/?)|(^/I)'' | sed -e ''s/^. *//'' | sed -e ''s//(.*/)/"/1"/'' | xargs rm -rf

No olvides obtener los últimos archivos de SVN

svn update --force



svn revert deshace cualquier cambio local que haya realizado


svn revert -R . svn cleanup . --remove-unversioned


svn revert -R . svn up

Esto revertirá recursivamente el directorio actual y todo lo que está debajo y luego actualizará a la última versión.


svn status | grep ''^M'' | sed -e ''s/^.//'' | xargs rm svn update

Eliminará cualquier archivo que se haya modificado. Me parece recordar haber tenido problemas con la reversión cuando los archivos y directorios pueden haber sido agregados.