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:
- Configurar el control de versiones de Team Foundation en el equipo de desarrollo
- Crear y trabajar con áreas de trabajo
Desarrollo de su aplicación
Utilice los comandos siguientes para desarrollar la aplicación con el equipo bajo control de versiones:
- Comando Add: agrega archivos y carpetas al control de versiones.
- Comando Checkout (o Edit): desprotege un archivo y cambia su estado de cambio pendiente a Editar.
- Comando Delete (Control de versiones de Team Foundation): quita archivos y carpetas del servidor de Azure DevOps y los elimina del disco.
- Comando Get: obtiene (descarga) la versión más reciente o una versión especificada de uno o varios archivos o carpetas de Azure DevOps Server en el área de trabajo.
- Comando Rename (Control de versiones de Team Foundation): cambia el nombre o la ruta de acceso de un archivo o carpeta.
- Comando Status: muestra información sobre los cambios pendientes de los archivos y carpetas en una área de trabajo o en un conjunto de cambios agregados pendientes de confirmación.
- Comando Undo: descarta los cambios pendientes especificados en archivos o carpetas.
- Comando Undelete: restaura los elementos que se eliminaron anteriormente.
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
- Comando Properties (o Info): muestra información sobre los elementos del control de versiones.
- Comando Dir: muestra el contenido del servidor de control de versiones.
- Comando Destroy (Control de versiones de Team Foundation): elimina permanentemente los archivos controlados por versiones.
- Comando LocalVersions: muestra las versiones de los elementos del área de trabajo.
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
- Comando Changeset: cambia o muestra los atributos del conjunto de cambios.
- Comando History: muestra el historial de revisiones de archivos o carpetas.
- Comando Label (Control de versiones de Team Foundation): asocia o quita etiquetas de archivos o carpetas.
- Comando Labels: muestra información sobre las etiquetas que se usan en el servidor.
- Comando Rollback (Control de versiones de Team Foundation): revierte los efectos de los conjuntos de cambios.
- Comando Unlabel: quita un elemento de una etiqueta existente en el servidor.
- Comando View: recupera una versión especificada de un archivo y la muestra.
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
- Comando Lock: bloquea o desbloquea archivos y carpetas.
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
oCheckout
: 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.