2010-05-25 14 views
162

Ero nel mezzo di una svn add additiva/commit e una cartella che non aveva le proprietà di ignore appropriate era inclusa. Ho ottenuto circa 100 file binari caricati ora in versione, ma non mi sono ancora impegnato."unadd" un file in svn prima del commit

Qual è il modo più semplice per "annullare" questo, senza eliminare tutti i documenti?

risposta

214

Usa svn revert --recursive folder_name


Attenzione

svn revert è intrinsecamente pericolosa, dal momento che tutto il suo scopo è quello di buttare via i dati   — vale a dire, le modifiche non salvate. Una volta ripristinato, Subversion fornisce in nessun modo per recuperare quelle modifiche non salvate.

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

+12

Per espandere su questo - 'revert' senza una revisione specificata annulla qualsiasi modifica verificatasi dall'ultimo checkout, incluse le modifiche di pianificazione di aggiunta/eliminazione, per i file specificati. – Amber

+0

dove nome_cartella è la cartella principale della cartella in cui è stato eseguito il comando "Aggiungi" – MacGyver

+16

Questa risposta è pericolosamente errata - non attiverà le modifiche RIMUOVENDO LE COPIE LOCALI DEI FILE. La risposta di Brian Lacy sotto è molto meglio. –

26

Provare svn revert filename per ogni file che non è necessario e che non è stato ancora eseguito. In alternativa, fare svn revert -R folder per la cartella problematica e quindi eseguire nuovamente l'operazione con la configurazione di ignoranza corretta.

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! Revert non è sicuro, in quanto perde tutte le modifiche locali – jpaugh

+0

@jpaugh - Questo è esattamente ciò che ho scritto nella risposta, no? – bobah

+0

Quello che l'OP chiedeva (e quello che mi aspettavo) era un comando per annullare l'aggiunta * senza * perdere le modifiche locali. 'svn revert'. Nessuna delle risposte qui menziona il fatto che le modifiche locali saranno perse dal ripristino. – jpaugh

113

svn rm --keep-local folder_name

Nota: In svn 1.5.4 svn rm cancella i file senza versione, anche quando viene specificato --keep-locale. Vedi http://svn.haxx.se/users/archive-2009-11/0058.shtml per ulteriori informazioni.

+7

Questo è utile sapere perché consente di annullare semplicemente "svn add" senza perdere le modifiche! –

+1

Sei sicuro che SVN 1.5.4 cancella i file non verificati? Il rapporto non era riproducibile e non ci sono altre email a riguardo. –

+3

Questa è la risposta migliore se si desidera "annullare" i file, ma conservarli. Dopo questo comando, i file saranno ancora lì con il? stato. –

1

su File - svn revert filename

Per Folders - svn revert -R folder

+2

No! Revert non è sicuro, in quanto perde tutte le modifiche locali – jpaugh

0

processo di completa (Unix pacchetto svn):

Controlla i file non sono in SVN:

> svn st -u folder 
? folder 

aggiungere tutti (compreso file ignorati):

> 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 

Rimuovi "Aggiungi" Flag a tutti * Ignora i file *:

> cd folder 

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


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

Modifica svn ignorano sulla cartella

svn propedit svn:ignore . 

Aggiungere due linee singole con appena il seguente:

folderToIgnore 
fileToIgnore1.txt 

Verifica quali file verranno caricati e impegnati:

> cd .. 

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


> svn ci -m "Commit message here" 
Problemi correlati