Comando Rollback (controllo della versione di Team Foundation)
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Visual Studio 2019 | Visual Studio 2022
È possibile usare il comando controllo della versione di Team Foundation (TFVC) tf rollback
per eseguire il rollback degli effetti di uno o più insiemi di modifiche in uno o più elementi controllati dalla versione. Questo comando non rimuove gli insiemi di modifiche dalla cronologia delle versioni di un elemento. Questo comando crea invece un set di modifiche in sospeso nell'area di lavoro che nega gli effetti dei set di modifiche specificati.
Prerequisiti
Per usare questo comando, è necessario disporre delle autorizzazioni Lettura, Estrazione e Archiviazione impostate su Consenti. Per altre informazioni, vedere Autorizzazioni tfvc predefinite.
Sintassi
tf rollback /toversion:VersionSpec ItemSpec [/recursive] [/lock:none|checkin|checkout] [/version:versionspec] [/keepmergehistory] [/login:username,[password]] [/noprompt]
tf rollback /changeset:ChangesetFrom~ChangesetTo [ItemSpec] [/recursive] [/lock:none|checkin|checkout] [/version:VersionSpec]
[/keepmergehistory] [/noprompt] [/login:username,[password]]
Parametri
Argomenti
Argomento
Descrizione
<ChangesetFrom>~<ChangesetTo>
Usare questo argomento con l'opzione /changeset
per specificare gli insiemi di modifiche di cui si vuole eseguire il rollback. È possibile specificare i set di modifiche nei modi seguenti:
- Un singolo insieme di modifiche, ad esempio
/changeset:C11
- Intervallo di insiemi di modifiche, ad esempio
/changeset:C7~C20
- Data, ad esempio
/changeset:D09/30/09
- Intervallo di date, ad esempio
/changeset:D09/23/09~D10/07/09
- Set di modifiche più recente o
/changeset:Tip
/changeset:T
<ItemSpec>
Utilizzare questo argomento per specificare uno o più elementi di cui si vuole eseguire il rollback. Se si usa l'opzione /toversion
, è necessario specificare questo argomento.
Per altre informazioni su come tfvc analizza le specifiche degli elementi, vedere Usare i comandi di controllo della versione di Team Foundation.
Nota
È possibile specificare più itemspec
argomenti.
<VersionSpec>
Valore fornito dall'utente sia per l'opzione /version
che per l'opzione /toversion
.
Utilizzare questo argomento con l'opzione /toversion
per ripristinare lo stato di un file in un insieme di modifiche specifico. È possibile specificare la versione nei modi seguenti:
- Un singolo insieme di modifiche, ad esempio
/toversion:C32
- Data a mezzanotte, ad esempio
/toversion:D06/19/09
- Una data e un'ora, ad esempio
/toversion:D06/19/09T14:32
- Un'etichetta, ad esempio
/toversion:LTestLabel
- Versione nell'area di lavoro mappata alla directory corrente.
/toversion:W
- Versione in un'area di lavoro specifica, ad esempio
/toversion:WResolveRIConflicts;AKerry
Per altre informazioni sull'analisi del controllo della versione di Team Foundation, versionspec
vedere Usare i comandi di controllo della versione di Team Foundation.
Opzioni
Opzione
Descrizione
/changeset
Usare questa opzione per specificare uno o più insiemi di modifiche specifici da negare.
/keepmergehistory
Questa opzione ha effetto solo se uno o più insiemi di modifiche di cui si esegue il rollback includono un ramo o una modifica di tipo merge. Specificare questa opzione se si desidera unire in futuro tra la stessa origine e la stessa destinazione per escludere le modifiche di cui si esegue il rollback.
/lock
Specificare questa opzione per impedire ad altri utenti di eseguire l'archiviazione o l'estrazione di elementi fino a quando non si completa il rollback di tutte le modifiche associate. Per altre informazioni, vedere Informazioni sui tipi di blocco.
Opzioni di blocco:
None
. Predefinito. Non viene applicato alcun blocco. Se il file di cui si esegue il rollback è stato bloccato, questa opzione rimuove il blocco.Checkin
. Blocca un elemento fino a quando non si rilascia il blocco eseguendo un'archiviazione. Altri utenti possono controllare l'elemento specificato, ma gli utenti non possono archiviare le revisioni fino a quando il blocco non viene rimosso. Non è possibile bloccare un file già bloccato.Checkout
. Impedisce agli utenti di archiviare o archiviare un elemento bloccato fino a quando non si rimuove il blocco eseguendo un'archiviazione.
/login
Per informazioni su questa opzione, vedere Usare le opzioni per modificare le funzioni di un comando.
/noprompt
Utilizzare questa opzione per eliminare tutte le finestre di dialogo che altrimenti verranno visualizzate durante questa operazione.
/recursive
Specificare questa opzione se si desidera che l'operazione includa elementi nelle sottocartelle.
/toversion
Specificare questa opzione per ripristinare lo stato di un file in un insieme di modifiche specifico. Quando si usa questa opzione, si nega l'effetto di tutti i set di modifiche applicati dopo la versione specificata.
/version
Specifica la versione corrente dei file e delle cartelle di cui si vuole eseguire il rollback.
Osservazioni:
Il tf rollback
comando nega l'effetto di ogni insieme di modifiche specificato per ogni elemento specificato. Nella tabella seguente viene elencato il modo in cui l'operazione nega ogni tipo di modifica.
Tipo di modifica di cui è stato eseguito il rollback | Tipo di modifica del rollback |
---|---|
aggiungere, diramare o annullare l'eliminazione | delete |
edit | edit |
encoding | encoding |
rinomina/sposta | rinomina/sposta |
delete | annulla eliminazione |
merge | Modificare che nega le modifiche unite nel ramo corrente. |
L'elenco seguente fornisce alcuni esempi di modifiche risultanti dal rollback
comando :
Si esegue il rollback di un insieme di modifiche in cui si è verificata una modifica aggiunta. L'operazione di rollback causa una modifica di rollback e una modifica di eliminazione .
Si esegue il rollback del set di modifiche 521 in cui si è verificata una modifica . L'operazione di rollback causa una modifica di rollback e una modifica che nega la modifica nel set di modifiche 521.
Nel set di modifiche 132 è stato eseguito il merge da $/BranchA/File1.txt a $/BranchB/File1.txt. Le modifiche apportate a tale unione includono modifiche alle modifiche apportate ai set di modifiche 92 e 104. Nel set di modifiche 162 si esegue il rollback del set di modifiche 132, che comporta una modifica di rollback e una modifica apportata a $/BranchB/File1.txt che nega le modifiche apportate ai set di modifiche 92 e 104.
Codici di uscita
Dopo l'esecuzione del tf rollback
comando viene visualizzato un codice di uscita dalla tabella seguente.
Codice di uscita | Descrizione |
---|---|
0 | Operazione di cui è stato eseguito il rollback di tutti gli elementi. |
1 | L'operazione ha eseguito il rollback di almeno un elemento, ma non è stato possibile eseguire il rollback di uno o più elementi. |
100 | L'operazione non è riuscita a eseguire il rollback di elementi. |
Esempi
Nell'esempio seguente viene negato l'effetto del set di modifiche 23 su tutti gli elementi modificati nel set di modifiche:
c:\workspace> tf rollback /changeset:C23
Nell'esempio seguente viene negato l'effetto del set di modifiche 23 nel file a.txt:
c:\workspace> tf rollback /changeset:C23 a.txt
L'esempio seguente modifica il contenuto di a.txt in modo che corrisponda alla versione archiviata con il set di modifiche 23:
c:\workspace> tf rollback /toversion:C23 a.txt
L'esempio seguente modifica il contenuto di OurTeamProject in modo che corrisponda all'ultimo set di modifiche applicato alla mezzanotte del 31 agosto 2009:
c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/
Esempio di opzione /keepmergehistory
Quando si esegue il rollback di un insieme di modifiche che include un ramo o una modifica di tipo merge, in genere si desidera unire future tra la stessa origine e la stessa destinazione per includere tali modifiche. Tuttavia, è possibile usare l'opzione /keepmergehistory
se si desidera unire in futuro tra la stessa origine e la stessa destinazione per escludere i set di modifiche inclusi in un'operazione di unione precedente. Ad esempio:
Il 30 giugno 2009 si esegue un merge completo di tutti gli elementi da $/BranchA/ a $/BranchB/.
c:\workspace> tf merge $/BranchA $/BranchB
L'unione viene archiviata come parte del set di modifiche 292.
A luglio si apportano diverse modifiche $/BranchA/Util.cs. Queste modifiche sono incluse nei set di modifiche 297, 301 e 305.
Il 1° agosto 2009 si unisce $/BranchA/Util.cs a $/BranchB/Util.cs.
c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
La modifica viene archiviata come parte del set di modifiche 314. Il risultato di questa operazione è che le modifiche apportate nei set di modifiche 297, 301 e 305 a $/BranchA/Util.cs vengono ora applicate anche a $/BranchB/Util.cs.
Una settimana dopo, ci si rende conto che le modifiche apportate a $/BranchA/Util.cs a luglio non sono appropriate per $/BranchB/Util.cs. È possibile usare il
rollback
comando per negare queste modifiche. Quando si usa il comando per eseguire ilrollback
rollback di una modifica di tipo merge o di un ramo , è necessario prendere una decisione.Se si desidera che le modifiche apportate a $/BranchA/Util.cs nel mese di luglio vengano applicate nuovamente a $/BranchB/Util.cs in future merge, immettere il comando seguente:
c:\workspace> tf rollback /changeset:314
Se si desidera che le modifiche apportate a $/BranchA/Util.cs nel mese di luglio non vengano mai riapplicate a $/BranchB/Util.cs in future merge, immettere il comando seguente:
c:\workspace> tf rollback /changeset:314 /keepmergehistory
Alcune settimane dopo, si unisce $/BranchA/ in $/BranchB/.
c:\workspace> tf merge $/BranchA $/BranchB
Se si omette l'opzione
/keepmergehistory
durante il rollback, la modifica di merge si applica a $/BranchB/Util.cs tutti i set di modifiche applicati a $/BranchA/Util.cs dal set di modifiche 292, inclusi i set di modifiche 297, 301 e 305. In altre parole, l'unione annulla la modifica di rollback.Se è stata inclusa l'opzione
/keepmergehistory
durante il rollback, l'operazione di merge si applica a $/BranchB/Util.cs tutti i set di modifiche applicati a $/BranchA/Util.cs dopo il set di modifiche 292, esclusi i set di modifiche 297, 301 e 305. In altre parole, l'unione non annulla la modifica di rollback. Di conseguenza, il contenuto di BranchA potrebbe non corrispondere al contenuto in BranchB.