Annulla svn aggiungi senza ripristinare le modifiche locali


157

Ho eseguito accidentalmente svn add *e aggiunto un mucchio di file che non dovrebbero essere nel repository. Ho anche modifiche locali in alcuni file che voglio conservare. Esiste un modo semplice per annullare semplicemente svn addsenza ripristinare le modifiche locali? Il principale suggerimento che vedo su Google è svn revert, che presumibilmente annulla le modifiche locali.

Risposte:


282

Sarebbe:

svn rm --keep-local

Mi è successa la stessa cosa. :-P

Molte persone hanno commentato che dovresti usare:

svn rm --keep-local FILENAME

applicare il comando su uno o più file, anziché su tutto, che può avere effetti collaterali indesiderati.


1
Questo non ha avuto alcun effetto per me. Ho eseguito il codice come sopra (incluso il periodo finale) dalla cartella di base. Non sono sicuro che mi manchi qualcosa.
zzz,

8
Nota che devi aggiungere il nome del file al comando in questo modo svn rm --keep-local FILENAME. La FILENAMEpuò usare * per abbinare più file (se siete abbastanza fortunati da avere un modello).
Adam Badura,

4
avvertimento! - l'utilizzo di questo comando durante l'utilizzo di svn externals rimuove anche tutti gli esterni collegati ...
kostja

2
Se lo commetti, il commit non includerà la rimozione del file in questione dal repository?
jwg

1
//, ho la stessa domanda di jwg. Ho apportato alcune modifiche a un file controllato da SVN. Voglio mantenere tali modifiche localmente. Tuttavia, non voglio rimuovere del tutto il file dal repository. Non voglio semplicemente inserire le mie modifiche locali nel file.
Nathan Basanese,

34

Se tali file si trovano in una directory che non è stata ancora eseguita il commit, è possibile rimuovere l'intero contenuto della directory dal commit successivo eseguendo:

svn delete --keep-local /path/to/directory

Tuttavia, se tali file sono già nel repository e ora contengono modifiche che non si desidera eseguire il commit, è possibile eseguire il commit del resto dei file utilizzando le liste delle modifiche:

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

È possibile correggere il checkout nel modo seguente:

  1. Eseguire il backup dei file locali
  2. Ripristina il checkout SVN
  3. Ripristina i file

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

Il comando finale crea sempre un livello di directory aggiuntivo, cioè finisce con YOURDIR/YOURDIR/, anche se penso che il problema sia nella creazione del comando di backup iniziale YOURDIR.bak/YOURDIR/.
James,

Per evitare che rsync richieda una barra finale nella directory di origine. Ho modificato la risposta.
Brice M. Dempsey,

3

Ho avuto lo stesso problema, ho aggiunto accidentalmente una directory / tramite svn addche contiene i file binari e compilati. Questo comando cancella effettivamente la directory.

svn rm --force <directory-name>

Nel mio caso non ho bisogno della directory, quindi è stato sicuro eliminarlo. Se si desidera conservare i file / directory salvati in un luogo prima di applicare il comando e dopo copiarli nuovamente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.