Usar comandos de controle de versão do Team Foundation

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

Visual Studio 2019 | Visual Studio 2022

Você pode usar comandos de controle de versão para executar quase todas as tarefas de controle de versão do Team Foundation (TFVC) que você pode fazer no Visual Studio. Você também pode usar comandos de controle de versão para executar várias tarefas que não podem ser feitas no Visual Studio. Para executar comandos de controle de versão a partir de um prompt de comando ou dentro de um script, use a tf.exe ferramenta.

Executar um comando

Para iniciar o prompt de comando do Visual Studio, em Iniciar do Windows, selecione o atalho Prompt de Comando do Desenvolvedor para VS2022 ou versão anterior.

Nota

Para o Visual Studio 2019 e versões posteriores, o tf.exe binário não está mais em um local fixo no caminho de instalação do Visual Studio como em algumas versões anteriores, por exemplo, C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE. Se o script usar tf.exeo , não codifice um caminho para o arquivo com base no caminho de instalação do Visual Studio.

Na maioria dos casos, você executa o comando de controle de versão no contexto de um diretório mapeado no espaço de trabalho. Por exemplo, $/SiteApp/Main/ é mapeado para c:\\code\\SiteApp\\Main\\. Para obter a versão mais recente de todos os itens no espaço de trabalho, use o seguinte comando:

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

Configure sua máquina de desenvolvimento e gerencie espaços de trabalho

Seu espaço de trabalho é uma cópia local da base de código da sua equipe. Como é uma cópia local em sua máquina de desenvolvimento, você pode desenvolver e testar seu código isoladamente até estar pronto para fazer check-in do seu trabalho. Aqui estão alguns comandos para gerenciar seu espaço de trabalho:

Para obter mais informações, consulte os seguintes recursos:

Desenvolver a sua aplicação

Use estes comandos para desenvolver seu aplicativo sob controle de versão com sua equipe:

  • Adicionar comando: adiciona arquivos e pastas ao controle de versão.
  • Comando Checkout (ou Editar): faz check-out de um arquivo e altera seu status de alteração pendente para edição.
  • Comando Excluir (Controle de Versão do Team Foundation): Remove arquivos e pastas do servidor Azure DevOps e os exclui do disco.
  • Obter comando: obtém (baixa) a versão mais recente ou uma versão especificada de um ou mais arquivos ou pastas do Servidor de DevOps do Azure para o espaço de trabalho.
  • Comando Renomear (Controle de Versão do Team Foundation): Altera o nome ou o caminho de um arquivo ou pasta.
  • Comando Status: exibe informações sobre alterações pendentes em arquivos e pastas em espaços de trabalho ou em um conjunto de prateleiras.
  • Comando Desfazer: descarta as alterações pendentes especificadas em arquivos ou pastas.
  • Comando Undelete: restaura itens que foram excluídos anteriormente.

Para obter mais informações, consulte Desenvolver seu aplicativo no controle de versão do Team Foundation.

Suspender o seu trabalho

Por várias razões, às vezes você precisa reservar parte ou todo o seu trabalho em andamento. Para suspender e retomar seu trabalho e gerenciar suas prateleiras, use estes comandos:

Para obter mais informações, consulte Suspender seu trabalho e gerenciar seus conjuntos de prateleiras.

Contribua com o seu trabalho

Use o checkin comando para fazer check-in do seu código na base de código da equipe:

  • Comando Checkin: Faz check-in de alterações pendentes em arquivos ou pastas no servidor.

Para obter mais informações, consulte Fazer check-in do seu trabalho na base de código da equipe.

Gerencie arquivos e resolva problemas

Use os recursos nas seções a seguir para gerenciar arquivos.

Exibir e gerenciar arquivos e pastas de controle de versão

Para obter mais informações, consulte Usar o Gerenciador de Controle do Código-Fonte para gerenciar arquivos sob controle de versão.

Ver e gerir versões anteriores

Para obter mais informações, consulte Exibir e gerenciar versões anteriores.

Comparar pastas e ficheiros

  • Comando Diferença: Compara as diferenças entre arquivos e prateleiras.
  • Comando Folderdiff: compara as diferenças entre arquivos em duas pastas.

Para obter mais informações, consulte Exibir e gerenciar versões anteriores.

Resolver conflitos de ficheiros

  • Comando Resolver: resolve conflitos entre itens no espaço de trabalho e no servidor.

Para obter mais informações, consulte Resolver conflitos de controle de versão do Team Foundation.

Trabalhar com bloqueios de controle de versão

  • Comando Bloquear: bloqueia ou desbloqueia ficheiros e pastas.

Para obter mais informações, consulte Trabalhar com bloqueios de controle de versão.

Isolar o risco

Use os seguintes comandos para isolar o risco usando ramificações:

Para obter mais informações, consulte Usar ramificações para isolar o risco no Controle de Versão do Team Foundation.

Administrar o controle de versão

Use os seguintes comandos para gerenciar seu sistema de controle de versão:

Para obter mais informações, consulte Definir configurações de check-out.

Obter ajuda sobre comandos de controle de versão

Use os seguintes comandos para obter informações detalhadas sobre comandos de controle de versão:

Compreender a sintaxe do comando

A sintaxe de cada comando aparece na parte superior de cada artigo de referência.

Argumentos obrigatórios e opcionais

São necessários argumentos sem parênteses. [Colchetes] Indique argumentos opcionais que não são necessários para concluir um comando. No entanto, alguns argumentos opcionais têm padrões que são aplicados ao comando, mesmo que você não especifique a opção.

Argumentos exclusivos

Quando as opções são separadas por um pipe (|), você pode especificar uma das opções.

Argumentos literais e substituíveis

Os itens que não estão entre parênteses são opções que você inclui textualmente. Os itens entre colchetes angulares (< e >) são argumentos que você deve substituir por caracteres reais para executar um comando.

Atalhos de comando e aliases

Alguns comandos suportam atalhos. Por exemplo, você pode chamar o comando Delete com um ou tf deletetf del.

Exemplo

Por exemplo, considere o comando Checkout:

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

Este exemplo inclui os seguintes argumentos:

  • <item-spec>: Você deve substituir esse argumento por uma especificação de item que identifique os itens que você está fazendo check-out.
  • Os argumentos a seguir são opcionais. Se você não fornecê-los, nenhum de seus efeitos se aplica ao comando:
    • /lock:(none|checkin|checkout): Se você não especificar a /lock opção, o sistema usa /lock:none por padrão. Caso contrário, você pode especificar uma das outras opções de bloqueio.
    • /recursive: Se você quiser fazer check-out recursivo de vários itens em uma pasta, você deve especificar essa opção literalmente.
    • /login:<username>, <password>: Se você quiser executar o comando como outro usuário, você deve especificar a /login opção literalmente e substituir <username> pelo nome do usuário. Se necessário, substitua <password> pela senha do usuário.

Especificar os itens afetados por um comando

Você pode usar especificações de item e especificações de versão para especificar quais itens são afetados por um comando.

Usar um argumento de especificação de item para especificar itens afetados

Use uma especificação de item para especificar os itens afetados por um comando. Você pode especificar itens em uma máquina cliente ou em seu servidor Azure DevOps. Você pode usar caracteres curinga como * e ?.

Argumentos de especificação do item do cliente

Um argumento de especificação de item de cliente especifica um caminho para itens em uma máquina cliente, como:

  • Uma pasta, por exemplo, c:\code\SiteApp\Main\SolutionA\.
  • Um arquivo, por exemplo, c:\code\SiteApp\Main\SolutionA\Project1\program.cs.
  • Vários arquivos, por exemplo, c:\code\SiteApp\Main\SolutionA\*.cs.
  • Um caminho UNC (convenção universal de nomenclatura), como \\myshare\code\SiteApp\Main.

Argumentos de especificação de item de servidor

Um argumento de especificação de item de servidor especifica um caminho para itens em seu servidor de DevOps do Azure, como:

  • Uma pasta, por exemplo, $/SiteApp/Main/SolutionA.
  • Um arquivo, por exemplo, $/SiteApp/Main/SolutionA/Project1/program.cs.
  • Vários arquivos, por exemplo, $/SiteApp/Main/SolutionA/*.cs.

Normalmente, você usa argumentos de especificação de item de servidor quando precisa executar um comando em itens que não estão na máquina cliente. Por exemplo, digamos que você esteja trabalhando em uma máquina de desenvolvimento. Se você precisar obter alguns dados do histórico de revisões sobre alguns itens que estão em uma coleção de projetos na qual você não trabalha, você pode usar o seguinte comando:

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

Argumentos de especificação de vários itens

Para alguns comandos, você pode especificar vários argumentos de especificação de item, por exemplo:

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

Este comando faz check-out program.cs e program2.c.

Usar um argumento de especificação de versão para especificar versões afetadas de itens

Você usa uma especificação de versão para especificar a versão dos itens afetados por um comando. Para fornecer uma especificação de versão, você pode:

  • Use a /version opção, por exemplo, /version:C44.

  • Anexe a especificação de versão a uma especificação de item com ponto-e-vírgula, por exemplo, program1.cs;C44.

Ao usar o comando Histórico ou o comando Diferença, você pode especificar um intervalo de versões separando as versões com um til, por exemplo:

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

Use a sintaxe a seguir para especificar uma especificação de versão:

Tipo Sintaxe Description Exemplos Result
Conjunto de alterações [C]<version-number> Especifica itens com base em um número de conjunto de alterações. Se um item que está no escopo não foi modificado no conjunto de alterações especificado, o sistema usa a versão mais recente do item que ocorreu antes do conjunto de alterações especificado. Você pode omitir C se especificar apenas um número. tf get readme.txt /v:C8

tf get readme.txt /v:8

tf get readme.txt;8
Se readme.txt foi modificado no conjunto de alterações 8, o código de exemplo obtém essa versão do arquivo. Caso contrário, ele obtém a versão mais recente do readme.txt antes da versão 8.
Etiqueta L<label> Especifica os itens aos quais um rótulo é aplicado. tf get readme.txt;LJulyHotFix

tf get /version:LLastKnownGood
O primeiro exemplo obtém a versão do readme.txt que foi rotulada JulyHotFix. O segundo recupera a versão de todos os itens rotulados (e exclui os itens não rotulados) no espaço de trabalho como existiam quando o conjunto de alterações rotulado LastKnownGood foi criado. Você pode usar o código no segundo exemplo como parte de um processo de compilação automatizado.
Data e hora D<yyyy-mm-ddTxx:xx>

ou

D<mm/dd/yyyy>

ou

Qualquer formato suportado pelo .NET Framework.

ou

Qualquer um dos formatos de data suportados na máquina local.
Especifica um conjunto de alterações que foi criado em uma data especificada em um momento específico. tf get /version:D2022-03-22

tf get /version:D2022-03-22T09:00
O primeiro exemplo atualiza o espaço de trabalho para corresponder à base de código tal como existia em 22 de março de 2022 à meia-noite. O segundo atualiza o espaço de trabalho para corresponder à base de código tal como existia em 22 de março de 2022 às 9h00. Para obter mais informações sobre formatos de data e hora suportados pelo .NET Framework, consulte DateTime e cadeias de caracteres de formato de data e hora padrão.
Espaço de trabalho atual W Especifica a versão em seu espaço de trabalho. - -
Espaço de trabalho especificado W<workspace-name>; <workspace-owner> Especifica a versão em um espaço de trabalho especificado. tf get /version:WResolveRIConflicts;PatW O exemplo especifica a ResolveRIConflicts versão no espaço de trabalho que PatW possui.
Gorjeta T Especifica a versão mais recente. - -

Usar opções para modificar o funcionamento de um comando

Você pode usar algumas opções comuns para modificar o funcionamento de um comando.

Use a /noprompt opção para suprimir solicitações de entrada de dados e redirecionar dados de saída

Use a /noprompt opção para suprimir solicitações de entrada de dados e redirecionar dados de saída para a janela do prompt de comando. Esta opção pode ser útil quando você precisa usar comandos de controle de versão em um script onde:

  • O comando prossegue sem a intervenção de um usuário.
  • Os dados estão disponíveis para o script executar operações, como análise ou captura.

Quando você usa essa opção, o sistema:

  • Suprime todas as solicitações de entrada:

    • As perguntas não são feitas na janela do prompt de comando. Por exemplo, quando você usa o comando Desfazer com essa opção, o sistema não solicita que você confirme se deseja desfazer as alterações.
    • O Windows e as caixas de diálogo não são exibidos. Por exemplo, você pode usar essa opção com o comando Checkin. O sistema não exibe a caixa de diálogo Check-in para você confirmar itens e itens de trabalho associados. Em vez disso, o sistema verifica os itens sem confirmação.
  • Redireciona os dados de saída para o prompt de comando. Por exemplo, você pode usar essa opção com o comando Histórico. Os dados são exibidos na janela do prompt de comando em vez da janela Histórico.

Use a /login opção para especificar credenciais

Use a /login opção para especificar a conta de usuário do servidor Azure DevOps para executar um comando. Esta opção pode ser útil quando você trabalha na máquina de outro membro da equipe.

Por exemplo, digamos que você esteja trabalhando na máquina de desenvolvimento do membro da sua equipe. Use o comando Bloquear para desbloquear um arquivo bloqueado anteriormente:

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

Se você quiser evitar que sua senha apareça no prompt de comando, você pode inserir o comando sem a senha:

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

Depois de inserir esse comando, o sistema solicita que você insira sua senha em uma caixa de diálogo que mascara sua entrada.

Use a /lock opção para aplicar ou remover um bloqueio

Importante

Como prática recomendada, use a /lock opção com discrição. Informe seus colegas de equipe por que você está bloqueando um item e quando planeja remover o bloqueio.

Use a /lock opção para aplicar ou remover um bloqueio ao mesmo tempo em que executa outro comando, como Adicionar ou Editar.

/lock:(none|checkin|checkout)

O /lock comando usa as seguintes opções:

  • None: Nenhum cadeado é colocado em um item. Se um cadeado já estiver no lugar, ele será removido.

  • Checkin ou Checkout: Um bloqueio é aplicado. Para obter mais informações, consulte Compreender os tipos de bloqueio.

Nota

Em alguns casos, a operação de bloqueio pode falhar:

  • Se outros usuários tiverem bloqueado qualquer um dos itens especificados, a operação de bloqueio falhará.
  • Se já houver uma alteração pendente no item especificado, o sistema ignorará essa opção. Nesse caso, você deve usar o comando Bloquear para alterar um bloqueio em um item.

Usar atalhos de opção

Você pode abreviar as seguintes opções.

Opção

Alias de opção

/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

Compreender os códigos de saída

Os comandos de controle de versão retornam os seguintes códigos de saída:

Código de saída

Definição

0

Êxito.

1

Sucesso parcial. Pelo menos alguma coisa, ou possivelmente tudo, não teve sucesso.

2

Comando não reconhecido.

100

Nada teve sucesso.

Por exemplo, digamos que você execute o seguinte comando:

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

Se um dos arquivos que você está tentando fazer check-out não existir no servidor, o comando retornará 1 para indicar sucesso parcial.