2013-10-08 13 views
10

Avevo modificato i file nella mia directory di lavoro e fatto un aggiornamento svn. L'aggiornamento è stato eseguito senza conflitti.Come annullare un aggiornamento svn?

Vorrei poter ripristinare il contenuto della directory di lavoro allo stato precedente all'aggiornamento di svn.

Il motivo è perché mantengo un repository git locale in parallelo al repository svn condiviso. Ho dimenticato di git commit le mie modifiche locali prima di fare l'aggiornamento svn. Ora la mia directory di lavoro contiene modifiche locali confuse con le modifiche risultanti dall'aggiornamento di svn. Se eseguo il commit, tutte le modifiche appariranno come una modifica atomica. Avrei voluto che fossero separati. Se potessi ripristinare l'aggiornamento e conservare il contenuto della directory di lavoro che avevo prima dell'aggiornamento di svn, potrei farlo.

+0

ho risolto in un altro modo. Le modifiche locali erano in file non interessati dall'aggiornamento. Quindi, grazie al meccanismo di git stage, impongo solo i file modificati localmente, quindi in un secondo commit ho modificato tutti gli altri file modificati dall'aggiornamento di svn. Sono stato fortunato. – chmike

+0

Sì, la fase git è la via d'uscita. Anche se i file _were_ sono interessati, puoi ancora usare 'svn diff' e' git apply' per annullare le modifiche di subversion e le tue modifiche. –

+1

In entrambi i casi, raccomanderei di usare 'git-svn' in futuro.Può gestire le revisioni di importazione ed esportazione in modo affidabile e può anche essere utilizzato come coda di patch locale (è possibile avere più commit sul ramo locale e spingerne solo alcuni in sovversione tramite rebase interattivo). –

risposta

4

Non è possibile. Lo stato prima dell'aggiornamento è stato dimenticato.

È possibile separare le modifiche facendo subversion diff, utilizzando git apply per applicarlo all'indice, eseguire il commit (le modifiche) e confermare tutto (le modifiche da pull).

Questa è una soluzione di emergenza. Ti suggerisco di passare a git-svn, che gestirà questo tipo di cose per te in futuro.

2

eseguire un "Aggiornamento alla versione", quindi modificare il file locale in versione stabile e quindi eseguire nuovamente il commit. In questo modo perdi tutte le modifiche locali.

+4

Perdere tutti i miei cambiamenti locali è ciò che volevo evitare. – chmike

+0

Ovviamente nel tuo caso, se il file locale modificato non è in conflitto, questa operazione non è utile. Quindi, sei fortunato! ;) buona giornata –

0

Questo è per utenti Linux.

Supponiamo revisioni come segue.

Testa - 20 Revisioni precedenti a testa - 18, 17, 15, 14, 10, 9,8.

passare alla directory src. Usa svn merge -r 17:18 $ url

$ url per la tua base svn.

6

Continuo a rispondere a questa domanda e in realtà non include la semplice risposta alla "Come annullare un aggiornamento di svn?" domanda.

Così, per il bene degli altri, con il caso risolvibile in cui si vuole solo eseguire il rollback di un aggiornamento:

Prima controllare il log con:

svn log | less 

Questo vi darà il numero di revisione (es. 957) a cui si desidera tornare. Poi:

svn up -r 957 
+4

Questa risposta ignora il caso di una directory di lavoro modificata. –

+0

true @RobertPollak ma risponde alla domanda posta dal titolo della domanda ... – ErichBSchulz

+0

Downvoting, perché questo non risponde alla domanda originale (la primissima frase di cui contiene la nota sui file modificati). Questa sarebbe una risposta a un'altra domanda "Come aggiornare a una revisione specifica". Questa risposta non funzionerà se ci sono file modificati, e non c'è nemmeno menzione a riguardo. –

-1

Nel caso in cui, se ci fossero conflitti si sono verificati durante l'aggiornamento, ci sarà una copia del file e la revisione disponibili nel vostro cestino

Problemi correlati