Condividi tramite


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 o modifica 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. 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 modifiche modifica 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:

  1. 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.

  2. A luglio vengono apportate diverse modifiche $/BranchA/Util.cs. Queste modifiche sono incluse nei set di modifiche 297, 301 e 305.

  3. 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.

  4. 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 comando rollback 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
      
  5. 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.