2010-05-25 15 views
162

Estaba en el medio de hacer un svn add/commit recursivo, y se incluyó una carpeta que no tenía las propiedades de ignorar correctas. Tengo aproximadamente 100 archivos binarios cargados versionados ahora, pero aún no me he comprometido."unadd" un archivo a svn antes del commit

¿Cuál es la forma más fácil de 'deshacer' esto, sin borrar todos los documentos?

Respuesta

214

Uso svn revert --recursive folder_name


Advertencia

svn revert es intrínsecamente peligrosa, ya que toda su propósito es para tirar de datos   — es decir, sus cambios no confirmados. Una vez que haya revertido, Subversion proporciona de ninguna manera para recuperar esos cambios no confirmados.

http://svnbook.red-bean.com/en/1.7/svn.ref.svn.c.revert.html

+12

Para ampliar esto: 'revert' sin una revisión especificada deshace cualquier cambio que haya ocurrido desde la última comprobación, incluidos los cambios de programación agregados/eliminados, para los archivos especificados. – Amber

+0

donde nombre_carpeta es la carpeta principal de la carpeta donde hizo el comando "Agregar" – MacGyver

+16

Esta respuesta es peligrosamente incorrecta: desestabilizará sus cambios AL RETIRAR SUS COPIAS LOCALES DE LOS ARCHIVOS. La respuesta de Brian Lacy a continuación es mucho mejor. –

26

Pruebe svn revert filename por cada archivo que no necesita y que aún no ha confirmado. O alternativamente, haga svn revert -R folder para la carpeta problemática y luego vuelva a hacer la operación con la configuración correcta de ignorar.

From the documentation:

you can undo any scheduling operations: 

$ svn add mistake.txt whoops 
A   mistake.txt 
A   whoops 
A   whoops/oopsie.c 

$ svn revert mistake.txt whoops 
Reverted mistake.txt 
Reverted whoops 
+1

¡No! Revertir no es seguro, ya que pierde todos los cambios locales – jpaugh

+0

@jpaugh - Esto es exactamente lo que escribí en la respuesta, ¿no? – bobah

+0

Lo que solicitó OP (y lo que esperaba) fue un comando para deshacer el agregado * sin * perder cambios locales. 'svn revert' Ninguna de las respuestas aquí menciona el hecho de que los cambios locales se perderán por la reversión. – jpaugh

113

svn rm --keep-local folder_name

Nota: En SVN SVN 1.5.4 rm borra archivos sin versión incluso cuando se especifica --keep-local. Consulte http://svn.haxx.se/users/archive-2009-11/0058.shtml para obtener más información.

+7

Esto es bueno saber, ya que le permite simplemente deshacer el "svn add" sin perder los cambios. –

+1

¿Está seguro de que SVN 1.5.4 borra archivos no versionados? El informe no fue reproducible, y no hay otro correo electrónico al respecto. –

+3

Esta es la mejor respuesta si desea "eliminar" los archivos, pero aún así conservarlos. Después de este comando, los archivos todavía estarán allí con el? estado. –

1

en Archivos - svn revert filename

Para carpetas - svn revert -R folder

+2

¡No! Revertir no es seguro, ya que pierde todos los cambios locales – jpaugh

0

proceso completo (Unix paquete SVN):

Verificar archivos no están en SVN:

> svn st -u folder 
? folder 

Agrega todas (incluyendo archivos ignorados):

> svn add folder 
A folder 
A folder/file1.txt 
A folder/folder2 
A folder/folder2/file2.txt 
A folder/folderToIgnore 
A folder/folderToIgnore/fileToIgnore1.txt 
A fileToIgnore2.txt 

quitar "Agregar" Bandera a todos * No haga caso de los archivos *:

> cd folder 

> svn revert --recursive folderToIgnore 
Reverted 'folderToIgnore' 
Reverted 'folderToIgnore/fileToIgnore1.txt' 


> svn revert fileToIgnore2.txt 
Reverted 'fileToIgnore2.txt' 

Editar SVN ignoran en la carpeta

svn propedit svn:ignore . 

Añadir dos líneas individuales con sólo el siguiente:

folderToIgnore 
fileToIgnore1.txt 

Verifique qué archivos se cargarán y confirmarán:

> cd .. 

> svn st -u 
A folder 
A folder/file1.txt 
A folder/folder2 
A folder/folder2/file2.txt 


> svn ci -m "Commit message here" 
Cuestiones relacionadas