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 destination
e 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