Comando Merge (Control de versiones de Team Foundation)
Azure DevOps Services | Azure DevOps Server 2022: Azure DevOps Server 2019
Visual Studio 2019 | de Visual Studio 2022
El comando tf merge
aplica los cambios de una rama a otra en control de versiones de Team Foundation (TFVC).
Nota
Los resultados de este comando no se reflejan en el servidor de Azure DevOps hasta que realice una operación de registro. Para obtener más información, consulte Desarrollo de código y administración de cambios pendientes.
Prerrequisitos
Para usar el comando merge
, tenga el permiso Desactive establecido en Permitir para la carpeta del área de trabajo que contiene el destination
y tenga el permiso Leer establecido en Permitir para la carpeta del área de trabajo que contiene el source
. Para obtener más información, consulte permisos predeterminados de TFVC.
Sintaxis
tf merge [/recursive] [/force] [/candidate] [/discard]
[/version:versionspec] [/lock:none|checkin|checkout] [/preview]
[/baseless] [/nosummary] [/noimplicitbaseless] [/conservative] [/format:(brief|detailed)] [/noprompt] [/login:username,[password]] source destination
Parámetros
Argumentos
de argumentos de
descripción
<versionspec>
Proporciona un valor como C2
para la opción /version
. Para obtener más información sobre cómo TFVC analiza una especificación de versión para determinar qué elementos están dentro de su ámbito, consulte Usar comandos de control de versiones de Team Foundation.
<source>
Especifica el archivo o la carpeta que se va a actuar como origen de la combinación.
<destination>
Especifica el archivo o la carpeta que se va a actuar como destino de la combinación.
<username>
Proporciona un valor a la opción /login
. Puede especificar un valor de username
como DOMAIN\username
o username
.
Opciones
de opción de
descripción
/recursive
Coincide con la especificación de elemento source
en el directorio actual y en todas las subcarpetas.
/force
Omite el historial de mezcla y combina los cambios especificados del origen en el destino, incluso si se han combinado algunos o todos estos cambios antes.
/candidate
Imprime una lista de todos los conjuntos de cambios del origen que aún no se han combinado en el destino. La lista debe incluir el identificador del conjunto de cambios que no se ha combinado y otra información básica sobre ese conjunto de cambios. Un asterisco para un resultado determinado indica que se ha combinado parcialmente, lo que significa que algunos de los cambios del conjunto de cambios se han combinado y no se han combinado otros cambios.
/discard
No realiza la operación de combinación, pero actualiza el historial de mezcla para realizar el seguimiento de que se produjo la combinación. Esto descarta que se use un conjunto de cambios para una combinación determinada.
/version
Para una combinación selectiva, esta opción especifica el intervalo que se debe combinar en el destino. Para una combinación de puesta al día, este parámetro especifica la versión antes de la cual se deben combinar todos los cambios no combinados.
Para una combinación selectiva, el intervalo de versiones indica los puntos inicial y final del conjunto de cambios que se van a combinar. Por ejemplo, si intenta combinar la versión 4~6
, se combinan los conjuntos de cambios 4, 5 y 6.
/lock
Especifica un tipo de bloqueo o quita un bloqueo de un elemento. Para obtener más información, consulte Descripción de los tipos de bloqueo.
Opciones de bloqueo:
None
: no coloca un bloqueo en un elemento y quita cualquier bloqueo existente del elemento.Checkin
: otros usuarios pueden consultar los elementos especificados, pero no pueden proteger las revisiones en archivos bloqueados hasta que libere el bloqueo realizando una comprobación. Si algún otro usuario ha bloqueado alguno de los elementos especificados, se produce un error en la operación de bloqueo.Checkout
: impide que los usuarios inicien sesión o desprotezque alguno de los elementos especificados hasta que libere explícitamente el bloqueo. Si algún otro usuario ha bloqueado alguno de los elementos especificados o si hay cambios pendientes existentes en cualquier elemento, se produce un error en la operación de bloqueo.
/preview
Muestra una vista previa de la combinación.
/baseless
Realiza una combinación sin una versión base. Es decir, permite al usuario combinar archivos y carpetas que no tienen una relación de combinación. Después de una combinación sin base, existe una relación de combinación y las futuras combinaciones no tienen que ser sin base.
Nota
Las combinaciones sin base no pueden eliminar archivos en el destino. Puede llevar manualmente estos cambios.
/noimplicitbaseless
Especifica que TFVC no hará una combinación implícita sin base entre dos elementos que tengan el mismo nombre relativo en dos árboles de control de versiones no relacionados.
/nosummary
Omite el resumen de conflictos, errores y advertencias.
/noprompt
Suprime las solicitudes de entrada de usted.
/conservative
Da lugar a más conflictos al combinar una rama a otra.
/format
Especifica los formatos de resumen de conflictos de combinación:
-
Brief
(valor predeterminado): solo resume el número total de conflictos, advertencias y errores. -
Detailed
: resume no solo el número total de conflictos, advertencias y errores, sino que también muestra detalles sobre cada conflicto.
Nota
Esta opción solo se aplica cuando la salida contiene un resumen de conflictos. No se puede mostrar el resumen si se usa la opción /nosummary
o la combinación provocó menos de 10 conflictos, advertencias y errores.
/login
Especifica el nombre de usuario y la contraseña para autenticar al usuario con Azure DevOps.
Observaciones
Puede usar el comando merge
de la utilidad de línea de comandos tf
para aplicar cambios en una rama de origen existente a una rama de destino existente. Puede combinar una revisión individual o un conjunto de cambios completo en la rama de destino. Puede combinar los cambios desde el origen a la rama de destino o desde el destino a la rama de origen.
El comando merge
también le permite consultar los cambios en una rama de origen que no se han migrado a la rama de destino. El comando también le permite indicar que determinados cambios nunca se combinarán del origen al destino y que ya no se mostrarán como candidatos para una operación de combinación.
Para obtener más información sobre cómo usar la utilidad de línea de comandos de tf
, consulte Usar comandos de control de versiones de Team Foundation.
Combinación sin base
Use la combinación sin base para combinar elementos que no se bifurcan directamente entre sí. Para realizar una combinación sin base, debe usar el comando tf merge
. Al realizar una combinación sin base, TFVC no tiene información sobre la relación de los archivos de las ramas. En una combinación sin base, debe realizar resoluciones manuales de conflictos. Después de realizar la combinación sin base y resolver los conflictos, TFVC registra el historial de mezcla y establece una relación entre las carpetas y los archivos.
Al ejecutar tf merge
, TFVC realiza una combinación implícita sin base entre los elementos que tienen el mismo nombre relativo en dos árboles controlados por versiones relacionados anteriormente. Por ejemplo, puede que quiera combinar las ramas relacionadas $SRC
y $TGT
. Ambas ramas contienen un archivo no relacionado denominado a.txt. Al ejecutar tf merge
, TFVC establece una relación entre los dos archivos a.txt si los dos archivos son iguales, el cifrado compatible con FIPS está deshabilitado y el archivo de origen no está relacionado con ningún otro archivo del destino.
Si ejecuta tf merge
con la opción /noimplicitbaseless
establecida, cuando TFVC intenta combinar las dos ramas, los dos archivos a.txt crean un conflicto de espacio de nombres al intentar proteger los cambios. Para resolver el conflicto, debe cambiar el nombre de uno de los archivos.
Ejemplos
En el ejemplo siguiente se combinan los cambios de MyFile_beta1 que no se han combinado en MyFile_RTM.
c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive
En el ejemplo siguiente se combina el conjunto de cambios 137 en rama2.
c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive
En el ejemplo siguiente se combinan todos los conjuntos de cambios hasta el conjunto de cambios 137 en rama2.
c:\projects>tf merge /version:C137 branch1 branch2 /recursive
En el ejemplo siguiente se imprime una lista de los conjuntos de cambios de rama1 que no se han combinado en branch2.
c:\projects>tf merge /candidate branch1 branch2 /recursive
En el ejemplo siguiente se imprime una lista de conjuntos de cambios en rama2 que no se han combinado de nuevo en branch1.
c:\projects>tf merge /candidate branch2 branch1 /recursive
En el ejemplo siguiente se descarta el conjunto de cambios 137 como candidato para combinar en branch2.
c:\projects>tf merge /discard /version:C137~C137 branch1 branch2 /recursive
En el ejemplo siguiente se descartan todos los conjuntos de cambios hasta el conjunto de cambios 137 como candidatos para combinar en branch2.
c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive