Comando Reversión (Control de versiones de Team Foundation)

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Puede usar el comando Control de versiones de Team Foundation (TFVC) tf rollback para revertir los efectos de uno o varios conjuntos de cambios en uno o varios elementos controlados por versiones. Este comando no quita los conjuntos de cambios del historial de versiones de un elemento. En su lugar, este comando crea un conjunto de cambios pendientes en el área de trabajo que anulan los efectos de los conjuntos de cambios que especifique.

Requisitos previos

Para usar este comando, debe tener los permisos de Lectura, Extraer del repositorio y Insertar en el repositorio establecidos en Permitir. Para más información, vea Permisos predeterminados de TFVC.

Sintaxis

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]]

Parámetros

Argumentos

Argument

Descripción

<ChangesetFrom>~<ChangesetTo>

Use este argumento con la opción /changeset para especificar los conjuntos de cambios que quiere revertir. Puede especificar los conjuntos de cambios de las maneras siguientes:

  • Un único conjunto de cambios, por ejemplo /changeset:C11
  • Un intervalo de conjuntos de cambios, por ejemplo, /changeset:C7~C20
  • Una fecha, por ejemplo, /changeset:D09/30/09
  • Intervalo de fechas, por ejemplo, /changeset:D09/23/09~D10/07/09
  • El conjunto de cambios más reciente, /changeset:Tip o /changeset:T

<ItemSpec>

Use este argumento para especificar uno o varios elementos que quiere revertir. Si usa la opción /toversion, debe especificar este argumento.

Para obtener más información sobre cómo TFVC analiza las especificaciones de elementos, consulte Uso de comandos de control de versiones de Team Foundation.

Nota:

Puede especificar más de un argumento itemspec.

<VersionSpec>

Valor proporcionado por el usuario para la opción /version y la opción /toversion.

Use este argumento con la opción /toversion para revertir un archivo a su estado en un conjunto de cambios específico. Puede especificar la versión de las maneras siguientes:

  • Un único conjunto de cambios, por ejemplo /toversion:C32
  • Una fecha a medianoche, por ejemplo /toversion:D06/19/09
  • Una fecha y una hora, por ejemplo, /toversion:D06/19/09T14:32
  • Una etiqueta, por ejemplo, /toversion:LTestLabel
  • La versión del área de trabajo que se asigna al directorio actual, /toversion:W
  • La versión de un área de trabajo específica, por ejemplo /toversion:WResolveRIConflicts;AKerry

Para obtener más información sobre cómo TFVC analiza el versionspec, vea Usar comandos de control de versiones de Team Foundation.

Opciones

Opción

Descripción

/changeset

Use esta opción para especificar uno o varios conjuntos de cambios específicos que quiere anular.

/keepmergehistory

Esta opción solo tiene un efecto si uno o varios de los conjuntos de cambios que va a revertir incluyen un cambio de rama o combinación. Especifique esta opción si quiere que las combinaciones futuras entre el mismo origen y el mismo destino excluyan los cambios que va a revertir.

/lock

Especifique esta opción para evitar que otros usuarios inserten en el repositorio o extraigan del repositorio elementos hasta que termine de revertir todos los cambios asociados. Para más información, vea Descripción de los tipos de bloqueo.

Opciones de bloqueo:

  • None. Predeterminada. No se aplica ningún bloqueo. Si el archivo que va a revertir se ha bloqueado, esta opción quita el bloqueo.
  • Checkin. Bloquea un elemento hasta que libere el bloqueo realizando una comprobación. Otros usuarios pueden consultar el elemento especificado, pero los usuarios no pueden insertar en el repositorio las revisiones hasta que se quite el bloqueo. No se puede bloquear un archivo que ya está bloqueado.
  • Checkout. Impide que los usuarios inserten o extraigan del repositorio un elemento bloqueado hasta que quite el bloqueo realizando una comprobación.

/login

Para obtener información sobre esta opción, consulte Usar opciones para modificar cómo funciona un comando.

/noprompt

Use esta opción para suprimir los cuadros de diálogo que, de lo contrario, aparecerían durante esta operación.

/recursive

Especifique esta opción si quiere que la operación incluya elementos en subcarpetas.

/toversion

Especifique esta opción para revertir un archivo a su estado en un conjunto de cambios específico. Cuando se usa esta opción, se anula el efecto de todos los conjuntos de cambios que se han aplicado desde la versión especificada.

/version

Especifica la versión actual de los archivos y carpetas que quiere revertir.

Observaciones

El comando tf rollback anula el efecto de cada conjunto de cambios que especifique para cada elemento que especifique. En la tabla siguiente se muestra cómo la operación anula cada tipo de cambio.

Tipo de cambio revertdo Tipo de cambio de reversión
agregar, rama o recuperar eliminados delete
edit edit
encoding encoding
cambiar de nombre/mover cambiar de nombre/mover
delete undelete
merge Cambio que anula cualquier cambio combinado en la rama actual.

En la lista siguiente se proporcionan algunos ejemplos de cambios resultantes del comando rollback:

  • Revierte un conjunto de cambios en el que se produjo un cambio de agregar. La operación de reversión provoca un cambio de reversión y un cambio de eliminación.

  • Revierte el conjunto de cambios 521 en el que se produjo un cambio de edición. La operación de reversión provoca un cambio de reversión y un cambio de edición que anula el cambio de edición en el conjunto de cambios 521.

  • En el conjunto de cambios 132, fusionó $/BranchA/File1.txt a $/BranchB/File1.txt. Los cambios de esa combinación incluían cambios de edición en los conjuntos de cambios 92 y 104. En el conjunto de cambios 162, se revierte el conjunto de cambios 132, lo que da lugar a un cambio de reversión y un cambio de edición a $/BranchB/File1.txt que anula los cambios de edición en los conjuntos de cambios 92 y 104.

Códigos de salida

Aparece un código de salida de la tabla siguiente después de ejecutar el comando tf rollback.

Código de salida Descripción
0 La operación revierte todos los elementos correctamente.
1 La operación revierte al menos un elemento correctamente, pero no pudo revertir uno o varios elementos.
100 La operación no pudo revertir ningún elemento.

Ejemplos

En el ejemplo siguiente se anula el efecto del conjunto de cambios 23 en todos los elementos que se cambiaron en ese conjunto de cambios:

c:\workspace> tf rollback /changeset:C23

En el ejemplo siguiente se anula el efecto del conjunto de cambios 23 en el archivo a.txt:

c:\workspace> tf rollback /changeset:C23 a.txt

En el ejemplo siguiente se cambia el contenido de a.txt para que coincida con la versión que se protegió con el conjunto de cambios 23:

c:\workspace> tf rollback /toversion:C23 a.txt

En el ejemplo siguiente se cambia el contenido de OurTeamProject para que coincida con el último conjunto de cambios que se aplicó el 31 de agosto de 2009 o antes de medianoche:

c:\workspace> tf rollback /toversion:D08/31/2009 /recursive $/OurTeamProject/

Ejemplo de la opción /keepmergehistory

Al revertir un conjunto de cambios que incluía una rama o un cambio de combinación, normalmente quiere que las combinaciones futuras entre el mismo origen y el mismo destino incluyan esos cambios. Sin embargo, puede usar la opción /keepmergehistory si quiere futuras combinaciones entre el mismo origen y el mismo destino para excluir los conjuntos de cambios que se abarcaron en una operación de combinación anterior. Por ejemplo:

  1. El 30 de junio de 2009, realiza una combinación completa de todos los elementos de $/BranchA/ a $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    

    Esta fusión mediante combinación se protegerá como parte del conjunto de cambios 292.

  2. En julio, realiza varios cambios $/BranchA/Util.cs. Estos cambios se engloban en los conjuntos de cambios 297, 301 y 305.

  3. El 1 de agosto de 2009, combinó $/BranchA/Util.cs a $/BranchB/Util.cs.

    c:\workspace> tf merge $/BranchA/Util.cs $/BranchB/Util.cs
    

    El cambio se comprueba como parte del conjunto de cambios 314. El resultado de esta operación es que las modificaciones realizadas en los conjuntos de cambios 297, 301 y 305 a $/BranchA/Util.cs ahora también se aplican a $/BranchB/Util.cs.

  4. Una semana después, se da cuenta de que las modificaciones realizadas en $/BranchA/Util.cs en julio no son adecuadas para $/BranchB/Util.cs. Puede usar el comando rollback para anular estos cambios. Al usar el comando rollback para revertir un cambio de combinación o un cambio de rama, tendrá que tomar una decisión.

    • Si quiere que los cambios realizados en $/BranchA/Util.cs en julio se vuelvan a aplicar a $/BranchB/Util.cs en futuras combinaciones, escriba el siguiente comando:

      c:\workspace> tf rollback /changeset:314
      
    • Si quiere que los cambios realizados en $/BranchA/Util.cs en julio nunca se vuelvan a aplicar a $/BranchB/Util.cs en futuras combinaciones, escriba el siguiente comando:

      c:\workspace> tf rollback /changeset:314 /keepmergehistory
      
  5. Unas semanas después, se combina $/BranchA/ en $/BranchB/.

    c:\workspace> tf merge $/BranchA $/BranchB
    
    • Si omite la opción /keepmergehistory al revertir, el cambio de combinación se aplica a $/BranchB/Util.cs todos los conjuntos de cambios que se aplicaron a $/BranchA/Util.cs desde el conjunto de cambios 292, incluidos los conjuntos de cambios 297, 301 y 305. En otras palabras, la combinación deshace el cambio de reversión.

    • Si incluyó la opción /keepmergehistory al revertir, la operación de combinación aplica a $/BranchB/Util.cs todos los conjuntos de cambios que se aplicaron a $/BranchA/Util.cs desde el conjunto de cambios 292, excluyendo los conjuntos 297, 301 y 305. En otras palabras, la combinación no deshace el cambio de reversión. Por lo tanto, es posible que el contenido de BranchA no coincida con el contenido de BranchB.