Usar los comandos del 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 comandos de control de versiones para realizar casi todas las tareas de Control de versiones de Team Foundation (TFVC) que puede realizar en Visual Studio. También puede usar comandos de control de versiones para realizar varias tareas que no se pueden realizar en Visual Studio. Use la herramienta tf.exe para ejecutar comandos de control de versiones desde un símbolo del sistema o en un script.

Ejecución de un comando

A fin de iniciar el símbolo del sistema de Visual Studio, en Inicio de Windows, seleccione el Símbolo del sistema para desarrolladores para VS2022 o el acceso directo de la versión anterior.

Nota:

En el caso de Visual Studio 2019 y versiones posteriores, el archivo binario tf.exe ya no está en una ubicación fija en la ruta de instalación de Visual Studio como pasaba en algunas versiones anteriores, por ejemplo, C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE. Si el script usa tf.exe, no codifique de forma rígida una ruta de acceso al archivo en función de la ruta de instalación de Visual Studio.

En la mayoría de los casos, el comando de control de versiones se ejecuta en el contexto de un directorio asignado en el área de trabajo. Por ejemplo, $/SiteApp/Main/ se asigna a c:\\code\\SiteApp\\Main\\. Para obtener la versión más reciente de todos los elementos del área de trabajo, use el comando siguiente:

c:\code\SiteApp\Main\SolutionA>tf get

Configuración de la máquina de desarrollo y administración de áreas de trabajo

El área de trabajo es una copia local del código base del equipo. Dado que es una copia local en la máquina de desarrollo, puede desarrollar y probar el código de forma aislada hasta que esté a punto para insertar en el repositorio su trabajo. A continuación se muestran algunos comandos para administrar el área de trabajo:

Para obtener más información, consulte los siguientes recursos:

Desarrollo de su aplicación

Utilice los comandos siguientes para desarrollar la aplicación con el equipo bajo control de versiones:

Para obtener más información, vea Desarrollo de la aplicación en el control de versiones de Team Foundation.

Suspender el trabajo

Por varias razones, a veces es necesario reservar parte o la totalidad del trabajo en curso. Para suspender y reanudar el trabajo, y para administrar los conjuntos de datos aplazados, use los comandos siguientes:

Para obtener más información, vea Suspensión del trabajo y administración de los conjuntos de cambios agregados pendientes de confirmación.

Contribuir con el trabajo

Use el comando checkin para insertar en el repositorio el código en la base de código del equipo:

  • Comando Checkin: inserta en el repositorio los cambios pendientes de los archivos o carpetas del servidor.

Para obtener más información, vea Inserción en el repositorio del trabajo en el código base del equipo.

Administrar archivos y resolver problemas

Use los recursos de las secciones siguientes para administrar archivos.

Visualización y administración de archivos y carpetas de control de versiones

Para obtener más información, vea Uso del Explorador de control de código fuente para administrar archivos bajo control de versiones.

Ver y administrar versiones pasadas

Para obtener más información, vea Visualización y administración de versiones anteriores.

Comparar carpetas y archivos

  • Comando Difference: compara las diferencias entre archivos y conjuntos de cambios agregados pendientes de confirmación.
  • Comando Folderdiff: compara las diferencias entre los archivos de dos carpetas.

Para obtener más información, vea Visualización y administración de versiones anteriores.

Resolución de conflictos de archivos

  • Comando Resolve: resuelve conflictos entre los elementos del área de trabajo y en el servidor.

Para obtener más información, vea Resolución de conflictos de Control de versiones de Team Foundation.

Trabajo con bloqueos del control de versiones

Para obtener más información, vea Trabajo con bloqueos de control de versiones.

Aislar riesgos

Utilice los comandos siguientes para aislar los riesgos mediante ramas:

Para obtener más información, vea Uso de ramas para aislar el riesgo en el Control de versiones de Team Foundation.

Administración del control de versiones

Puede utilizar los comandos siguientes para administrar el sistema de control de versiones:

Para obtener más información, vea Configuración de las opciones de desprotección.

Obtención de ayuda sobre los comandos de control de versiones

Utilice los comandos siguientes para obtener información más detallada sobre los comandos de control de versiones:

Entender la sintaxis de comandos

La sintaxis de cada comando aparece en la parte superior de cada artículo de referencia.

Argumentos opcionales y requeridos

Se requieren los argumentos que no están entre corchetes. Los [corchetes] indican los argumentos opcionales que no se necesitan para completar un comando. No obstante, algunos argumentos opcionales tienen valores predeterminados que se aplican al comando incluso si no se especifica la opción.

Argumentos exclusivos

Cuando las opciones las separa una canalización (|), puede especificar una de las opciones.

Argumentos textuales y reemplazables

Los elementos que no están entre corchetes son opciones que se incluyen textualmente. Los elementos entre corchetes angulares (< y >) son argumentos que se deben reemplazar por caracteres reales para realizar un comando.

Accesos directos y alias de comandos

Algunos comandos admiten accesos directos. Por ejemplo, puede llamar al comando Delete con tf delete o tf del.

Ejemplo

Por ejemplo, considere el uso del comando Checkout:

tf checkout [/lock:( none|checkin|checkout)] [/recursive] <item-spec> [/login: <username>, [<password>]]

En este ejemplo se incluyen los argumentos siguientes:

  • <item-spec>: debe reemplazar este argumento por una especificación de elemento que identifique los elementos que está extrayendo.
  • Los argumentos siguientes son opcionales. Si no los facilita, ninguno de sus efectos se aplicará al comando:
    • /lock:(none|checkin|checkout): si no especifica la opción /lock, el sistema usa /lock:none de forma predeterminada. De lo contrario, puede especificar una de las otras opciones de bloqueo.
    • /recursive: si quiere extraer del repositorio de forma recursiva varios elementos en una carpeta, debe especificar esta opción textualmente.
    • /login:<username>, <password>: si quiere ejecutar el comando como otro usuario, debe especificar la opción /login textualmente y reemplazar <username> por el nombre del usuario. En caso necesario, reemplace <password> por la contraseña del usuario.

Especificar los elementos a los que afecta un comando

Puede usar especificaciones de elemento y especificaciones de versión para detallar los elementos a los que les afecta un comando.

Uso de un argumento de especificación de elemento para detallar elementos afectados

Debe utilizar una especificación de elemento para detallar los elementos a los que les afecta un comando. Puede especificar elementos en una máquina cliente o en el servidor de Azure DevOps. Puede utilizar caracteres comodín como * y ?.

Argumentos de especificación de elemento de cliente

Un argumento de especificación de elemento de cliente especifica una ruta de acceso a los elementos de una máquina cliente, como los siguientes:

  • Una carpeta, por ejemplo, c:\code\SiteApp\Main\SolutionA\.
  • Un archivo, por ejemplo, c:\code\SiteApp\Main\SolutionA\Project1\program.cs.
  • Varios archivos, por ejemplo, c:\code\SiteApp\Main\SolutionA\*.cs.
  • Una ruta de acceso de convención de nomenclatura universal (UNC), como \\myshare\code\SiteApp\Main.

Argumentos de especificación de elemento de servidor

Un argumento de especificación de elemento de servidor especifica una ruta de acceso a los elementos del servidor de Azure DevOps, como los siguientes:

  • Una carpeta, por ejemplo, $/SiteApp/Main/SolutionA.
  • Un archivo, por ejemplo, $/SiteApp/Main/SolutionA/Project1/program.cs.
  • Varios archivos, por ejemplo, $/SiteApp/Main/SolutionA/*.cs.

Normalmente, se usan argumentos de especificación de elementos de servidor cuando es necesario ejecutar un comando en elementos que no están en la máquina cliente. Por ejemplo, supongamos que está trabajando en una máquina de desarrollo. Si necesita obtener algunos datos del historial de revisiones sobre algunos elementos que están en una colección de proyectos en la que no trabaja, puede usar el comando siguiente:

c:\>tf history /collection:https://fabrikam-3:8080/tfs/DefaultCollection
$/SiteApp/Main/SolutionA/Project1/* /recursive  
/noprompt 

Argumentos de especificación de varios elementos

Para algunos comandos, puede especificar varios argumentos de especificación de elemento como, por ejemplo:

c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c

Este comando extrae program.cs y program2.c.

Uso de un argumento de especificación de versión para especificar versiones afectadas de elementos

Debe utilizar una especificación de versión para especificar la versión de los elementos a los que les afecta un comando. Para proporcionar una especificación de versión, puede hacer lo siguiente:

  • Use la opción /version, por ejemplo, /version:C44.

  • Anexe la especificación de versión a una especificación de elemento con un punto y coma, por ejemplo, program1.cs;C44.

Al usar el comando History o el comando Difference, puede especificar un intervalo de versiones, separándolas con una tilde, por ejemplo:

c:\code\SiteApp\Main\SolutionA>tf history /noprompt * /recursive /v:D4/12/2022~D4/24/2022

Use la sintaxis siguiente para especificar una especificación de versión:

Tipo Sintaxis Descripción Ejemplos Resultado
Conjunto de cambios [C]<version-number> Especifica los elementos basándose en un número de conjunto de cambios. Si un elemento que está en el ámbito no se modificó en el conjunto de cambios especificado, el sistema toma la última versión del elemento que se ha producido antes del conjunto de cambios especificado. Puede omitir C si solo especifica un número. tf get readme.txt /v:C8

tf get readme.txt /v:8

tf get readme.txt;8
Si readme.txt se modificó en el conjunto de cambios 8, el código de ejemplo obtiene esa versión del archivo. De lo contrario, obtiene la versión más reciente de readme.txt anterior a la versión 8.
Etiqueta L<label> Especifica los elementos a los que se aplica una etiqueta. tf get readme.txt;LJulyHotFix

tf get /version:LLastKnownGood
En el primer ejemplo se obtiene la versión de readme.txt con la etiqueta JulyHotFix. El segundo recupera la versión de todos los elementos etiquetados (y elimina esos elementos no etiquetados) en el área de trabajo tal como existían cuando se creó el conjunto de cambios con la etiqueta LastKnownGood. Puede usar el código en el segundo ejemplo como parte de un proceso de compilación automatizado.
Fecha y hora D<yyyy-mm-ddTxx:xx>

or

D<mm/dd/yyyy>

or

Cualquier formato compatible con .NET Framework.

o

Cualquiera de los formatos de fecha admitidos en el equipo local.
Especifica un conjunto de cambios que se creó en una fecha especificada en un momento concreto. tf get /version:D2022-03-22

tf get /version:D2022-03-22T09:00
En el primer ejemplo, se actualiza el área de trabajo para que coincida con el código base tal como existía el 22 de marzo de 2022 a medianoche. En el segundo, se actualiza el área de trabajo para que coincida con el código base tal como existía el 22 de marzo de 2022 a las 9:00. Para obtener más información sobre los formatos de fecha y hora compatibles con .NET Framework, vea Fecha y hora y Cadenas de formato de fecha y hora estándar.
Área de trabajo actual W Especifica la versión en el área de trabajo. - -
Área de trabajo especificada W<workspace-name>; <workspace-owner> Especifica la versión en un área de trabajo especificada. tf get /version:WResolveRIConflicts;PatW En el ejemplo se especifica la versión del área de trabajo ResolveRIConflicts que posee PatW.
Sugerencia T Especifica la versión más reciente. - -

Utilizar las opciones para modificar el funcionamiento de un comando

Puede utilizar algunas opciones comunes para modificar el funcionamiento de un comando.

Use la opción /noprompt para suprimir las solicitudes de entrada de datos y redirigir los datos de salida.

Use la opción /noprompt para suprimir las solicitudes de entrada de datos y redirigir los datos de los resultados a la ventana del símbolo del sistema. Esta opción puede ser útil cuando necesite usar comandos de control de versiones en un script donde ocurra lo siguiente:

  • El comando continúa sin intervención de un usuario.
  • Los datos están disponibles para que el script realice operaciones en relación con estos, como el análisis o la captura.

Cuando se utiliza esta opción, el sistema:

  • Suprime todas las solicitudes de entrada:

    • No se muestran preguntas en la ventana del símbolo del sistema. Por ejemplo, al usar el comando Undo con esta opción, el sistema no le pide que confirme si quiere deshacer los cambios.
    • No se muestran ventanas ni cuadros de diálogo. Por ejemplo, puede usar esta opción con el comando Checkin. El sistema no muestra el cuadro de diálogo Insertar en el repositorio para confirmar elementos y elementos de trabajo asociados. En su lugar, el sistema inserta los elementos sin confirmación.
  • Redirige los datos de salida al símbolo del sistema. Por ejemplo, puede usar esta opción con el comando History. Los datos se muestran en la ventana del símbolo del sistema en lugar de la ventana Historial.

Use la opción /login para especificar las credenciales.

Use la opción /login para especificar la cuenta de usuario del servidor de Azure DevOps en la que se va a ejecutar un comando. Esta opción puede ser útil cuando se trabaja en la máquina de otro miembro del equipo.

Por ejemplo, supongamos que está trabajando en la máquina de desarrollo del miembro de su equipo. Use el comando Lock para desbloquear un archivo que bloqueó anteriormente:

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>,<password>

Si quiere evitar que la contraseña aparezca en el símbolo del sistema, puede escribir el comando sin la contraseña:

c:\code\SiteApp\Main> tf lock /lock:none program.cs /login:<username>

Después de escribir este comando, el sistema le pide que escriba la contraseña en un cuadro de diálogo que enmascara la entrada.

Uso de la opción /lock para aplicar o quitar un bloqueo

Importante

Como procedimiento recomendado, use la opción /lock con moderación. Informe a sus compañeros de equipo de por qué está bloqueando un elemento y cuando tiene pensado quitar el bloqueo.

Utilice la opción /lock para aplicar o quitar un bloqueo a la vez que ejecuta otro comando como, por ejemplo, Add o Edit.

/lock:(none|checkin|checkout)

El comando /lock usa las opciones siguientes:

  • None: no se aplica ningún bloqueo al elemento. Si ya se ha aplicado un bloqueo, se quita.

  • Checkin o Checkout: se aplica un bloqueo. Para obtener más información, vea Descripción de los tipos de bloqueo.

Nota:

En algunos casos, la operación de bloqueo puede producir un error:

  • Si otro usuario ha bloqueado alguno de los elementos especificados, se produce un error en la operación de bloqueo.
  • Si ya hay un cambio pendiente en el elemento especificado, el sistema omite este modificador. En este caso, debe usar el comando Lock para cambiar un bloqueo en un elemento.

Utilizar accesos directos a la opción

Puede abreviar las siguientes opciones.

Opción

Alias de la opción

/comment

-C

/computer

-M

/delete

-D

/force

-P

/format

-F

/help

-?, -H

/lock

-K

/login

-Y

/newname

-N

/noprompt

-I

/owner

-O

/recursive

-R

/server

-S

/slotmode

-X

/template

-T

/user

-U

/version

-V

/workspace

-W

Comprender los códigos de salida

Los comandos de control de versiones devuelven los siguientes códigos de salida:

Código de salida

Definición

0

Correcto.

1

Parcialmente correcto. Al menos algo, o quizá todo, no se ha podido realizar correctamente.

2

Comando no reconocido.

100

Nada ha sido correcto.

Por ejemplo, supongamos que ejecuta el comando siguiente:

c:\code\SiteApp\Main\SolutionA\Project1\>tf checkout program1.cs program2.c

Si uno de los archivos que intenta extraer del repositorio no existe en el servidor, el comando devolverá 1 para indicar que la operación ha sido parcialmente correcta.