Compartilhar via


Comando Merge (Controle de Versão do Team Foundation)

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

Visual Studio 2019 | Visual Studio 2022

O comando tf merge aplica alterações de um branch em outro no TFVC (Controle de Versão do Team Foundation).

Nota

Os resultados desse comando não são refletidos no servidor do Azure DevOps até que você faça uma operação de check-in. Para obter mais informações, consulte Desenvolver código e gerenciar alterações pendentes.

Pré-requisitos

Para usar o comando merge, tenha a permissão Check-out definida como Permitir para a pasta do workspace que contém o destinatione tenha a permissão Ler definida como Permitir para a pasta do workspace que contém o source. Para obter mais informações, consulte permissões TFVC padrão.

Sintaxe

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 argumento

descrição

<versionspec>

Fornece um valor como C2 para a opção /version. Para obter mais informações sobre como o TFVC analisa uma especificação de versão para determinar quais itens estão dentro de seu escopo, consulte Usar comandos de controle de versão do Team Foundation.

<source>

Especifica o arquivo ou pasta para atuar como a origem da mesclagem.

<destination>

Especifica o arquivo ou pasta para atuar como o destino da mesclagem.

<username>

Fornece um valor para a opção /login. Você pode especificar um valor username como DOMAIN\username ou username.

Opções

opção

descrição

/recursive

Corresponde à especificação do item source no diretório atual e em qualquer subpasta.

/force

Ignora o histórico de mesclagem e mescla as alterações especificadas da origem para o destino, mesmo que algumas ou todas essas alterações tenham sido mescladas antes.

/candidate

Imprime uma lista de todos os conjuntos de alterações na origem que ainda não foram mesclados no destino. A lista deve incluir a ID do conjunto de alterações que não foi mesclada e outras informações básicas sobre esse conjunto de alterações. Um asterisco para um determinado resultado indica que ele foi parcialmente mesclado, o que significa que algumas das alterações no conjunto de alterações foram mescladas e outras alterações não foram mescladas.

/discard

Não faz a operação de mesclagem, mas atualiza o histórico de mesclagem para acompanhar que a mesclagem ocorreu. Isso descarta que um conjunto de alterações seja usado para uma mesclagem específica.

/version

Para uma mesclagem seletiva, essa opção especifica o intervalo que deve ser mesclado no destino. Para uma mesclagem de recuperação, esse parâmetro especifica a versão antes da qual todas as alterações não mescladas devem ser mescladas.

Para uma mesclagem seletiva, o intervalo de versões indica os pontos de início e de término do conjunto de alterações a serem mescladas. Por exemplo, se você tentar mesclar a versão 4~6, os conjuntos de alterações 4, 5 e 6 serão mesclados.

/lock

Especifica um tipo de bloqueio ou remove um bloqueio de um item. Para obter mais informações, consulte Noções básicas sobre os tipos de bloqueio.

Opções de bloqueio:

  • None: não coloca um bloqueio em um item e remove qualquer bloqueio existente do item.

  • Checkin: outros usuários podem fazer check-out dos itens especificados, mas não podem fazer check-in de revisões para arquivos bloqueados até que você libere o bloqueio executando um check-in. Se outros usuários bloquearem qualquer um dos itens especificados, a operação de bloqueio falhará.

  • Checkout: impede que os usuários faça check-in ou faça check-out de qualquer um dos itens especificados até que você libere explicitamente o bloqueio. Se outros usuários bloquearem qualquer um dos itens especificados ou se houver alterações pendentes existentes em qualquer item, a operação de bloqueio falhará.

/preview

Mostra uma visualização da mesclagem.

/baseless

Executa uma mesclagem sem uma versão base. Ou seja, permite que o usuário mescle arquivos e pastas que não têm uma relação de mesclagem. Depois de uma mesclagem sem fundamento, existe uma relação de mesclagem e mesclagens futuras não precisam ser infundadas.

Nota

Mesclagens sem base não podem excluir arquivos no destino. Você pode realizar essas alterações manualmente.

/noimplicitbaseless

Especifica que o TFVC não fará uma mesclagem sem base implícita entre dois itens que têm o mesmo nome relativo em duas árvores de controle de versão não relacionadas.

/nosummary

Omite o resumo de conflitos, erros e avisos.

/noprompt

Suprime qualquer solicitação de entrada de você.

/conservative

Resulta em mais conflitos quando você mescla um branch para outro.

/format

Especifica os formatos de resumir conflitos de mesclagem:

  • Brief (padrão): resume apenas o número total de conflitos, avisos e erros.
  • Detailed: resume não apenas o número total de conflitos, avisos e erros, mas também lista detalhes sobre cada conflito.

Nota

Essa opção se aplica somente quando a saída contém um resumo de conflitos. O resumo não poderá ser mostrado se a opção /nosummary for usada ou se a mesclagem causou menos de 10 conflitos, avisos e erros.

/login

Especifica o nome de usuário e a senha para autenticar o usuário com o Azure DevOps.

Observações

Você pode usar o comando merge do utilitário de linha de comando tf para aplicar alterações em um branch de origem existente a um branch de destino existente. Você pode mesclar uma revisão individual ou um conjunto de alterações completo ao branch de destino. Você pode mesclar alterações da origem para o branch de destino ou do destino para o branch de origem.

O comando merge também permite consultar alterações em um branch de origem que não foram migradas para o branch de destino. O comando também permite que você indique que determinadas alterações nunca serão mescladas da origem para o destino e não devem mais ser exibidas como candidatas a uma operação de mesclagem.

Para obter mais informações sobre como usar o utilitário de linha de comando tf, consulte Usar comandos de controle de versão do Team Foundation.

Mesclagem sem base

Use a mesclagem sem base para mesclar itens que não são ramificados diretamente uns dos outros. Para fazer uma mesclagem sem fundamento, você deve usar o comando tf merge. Quando você faz uma mesclagem sem base, o TFVC não tem nenhuma informação sobre a relação dos arquivos nos branches. Em uma mesclagem sem fundamento, você deve fazer resoluções manuais de conflitos. Depois de fazer a mesclagem sem base e resolver conflitos, o TFVC registra o histórico de mesclagem e estabelece uma relação entre as pastas e os arquivos.

Quando você executa tf merge, o TFVC faz uma mesclagem sem base implícita entre itens que têm o mesmo nome relativo em duas árvores anteriormente relacionadas com controle de versão. Por exemplo, talvez você queira mesclar os branches relacionados $SRC e $TGT. Ambos os branches contêm um arquivo não relacionado chamado a.txt. Quando você executa tf merge, o TFVC estabelece uma relação entre os dois arquivos a.txt se os dois arquivos forem iguais, a criptografia compatível com FIPS estiver desabilitada e o arquivo de origem não estiver relacionado a nenhum outro arquivo no destino.

Se você executar tf merge com a opção /noimplicitbaseless definida, quando o TFVC tentar mesclar os dois branches, os dois arquivos a.txt criarão um conflito de namespace quando você tentar verificar as alterações. Para resolver o conflito, você deve renomear um dos arquivos.

Exemplos

O exemplo a seguir mescla alterações de MyFile_beta1 que não foram mescladas em MyFile_RTM.

c:\projects>tf merge MyFile_beta1 MyFile_RTM /recursive

O exemplo a seguir mescla o conjunto de alterações 137 em branch2.

c:\projects>tf merge /version:C137~C137 branch1 branch2 /recursive

O exemplo a seguir mescla todos os conjuntos de alterações até o conjunto de alterações 137 em branch2.

c:\projects>tf merge /version:C137 branch1 branch2 /recursive

O exemplo a seguir imprime uma lista dos conjuntos de alterações em branch1 que não foram mesclados em branch2.

c:\projects>tf merge /candidate branch1 branch2 /recursive

O exemplo a seguir imprime uma lista de conjuntos de alterações em branch2 que não foram mesclados novamente em branch1.

c:\projects>tf merge /candidate branch2 branch1 /recursive

O exemplo a seguir descarta o conjunto de alterações 137 como um candidato para mesclagem em branch2.

c:\projects>tf merge /discard /version:C137~C137 branch1 branch2 /recursive

O exemplo a seguir descarta todos os conjuntos de alterações até o conjunto de alterações 137 como candidatos para mesclagem em branch2.

c:\projects>tf merge /discard /version:C137 branch1 branch2 /recursive