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 tf rollback
(TFVC) 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, disporre delle autorizzazioni Read, Check Oute Check In impostate su Allow. 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>
Utilizzare questo argomento con l'opzione /changeset
per specificare i set 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,
/changeset:Tip
o/changeset:T
più recenti
<ItemSpec>
Utilizzare questo argomento per specificare uno o più elementi di cui si vuole eseguire il rollback. Se si utilizza 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ù di un argomento itemspec
.
<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 su come tfvc analizza il versionspec
, vedere Usare i comandi di controllo della versione di Team Foundation.
Opzioni
di 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 di ramo
/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
. Default. 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 il modo in cui un comando funziona.
/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 comando tf rollback
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, ramoo annullare l'eliminazione | eliminare |
modificare | modificare |
di codifica | di codifica |
rinominare/spostare | rinominare/spostare |
eliminare | annullare l'eliminazione |
unione | Modificare che nega le modifiche unite nel ramo corrente. |
L'elenco seguente fornisce alcuni esempi di modifiche risultanti dal comando rollback
:
Si esegue il rollback di un insieme di modifiche in cui si è verificata una modifica aggiungere. L'operazione di rollback causa una modifica di rollback
e una modifica eliminare .Si esegue il rollback del set di modifiche 521 in cui si è verificata una modifica modifica. L'operazione di rollback causa una modifica di rollback
e una modifica che nega la modifica 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 all'unione includono modifica modifiche nei 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 modifica in$/BranchB/File1.txt che nega le modifichemodifica nei set di modifiche 92 e 104.
Codici di uscita
Dopo l'esecuzione del comando tf rollback
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. Per esempio:
Il 30 giugno 2009 viene eseguito 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 vengono apportate 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 comando
rollback
per negare queste modifiche. Quando si usa il comandorollback
per eseguire il rollback di un merge modifica o una modifica 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 a 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
quando si esegue il rollback, la modifica unione 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
quando si esegue il rollback, l'operazione di merge si applica a $/BranchB/Util.cs tutti i set di modifiche applicati a $/BranchA/Util.cs dal set di modifiche 292, escluso 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.