Procurar repositórios Git e comparar branches no Visual Studio

A janela Alterações do Git fornece uma maneira perfeita de interagir com o Git durante a codificação sem precisar se afastar do código. Mas há momentos em que faz mais sentido se concentrar no repositório Git. Por exemplo, talvez seja necessário ter uma boa visão do que sua equipe tem trabalhado ou talvez comparar dois commits para investigar um bug.

Você pode trabalhar remotamente com o provedor Git de sua escolha, como o GitHub ou o Azure DevOps.

Navegar entre ramificações locais e remotas

Para começar, abra a janela repositório Git selecionando o Repositório Git no menu Exibir (ou usando o atalho de teclado Ctrl+0, Ctrl+R ). Você também pode acessar a janela repositório Git selecionando os links de saída/entrada na janela Alterações do Git e na barra de status.

Captura de tela da janela do Repositório Git no Visual Studio com Branches ou Tags e Pull Requests no painel esquerdo, e detalhes da pull request no painel principal.

Captura de tela que mostra a anatomia da janela do Repositório Git.

A janela do Repositório Git contém um painel esquerdo. O que você seleciona ali determina o conteúdo à direita.

Em Visual Studio, o painel esquerdo inclui Branches/Tags e Pull Requests.

A janela repositório Git contém três seções principais, conforme numerado na captura de tela anterior:

Branches/Marcas: o Git capacita os usuários a fazer várias tarefas e experimentar seu código por meio de branches. A ramificação no Git é útil em vários cenários, especialmente ao trabalhar em projetos complexos com vários recursos ou ao colaborar com uma equipe. Com o Visual Studio 17.13 e versões posteriores, você pode ver tags no repositório e navegar até qualquer tag. Sua equipe pode usar marcas git (por exemplo), v1.0para marcar pontos no histórico do repositório e exibir o estado do repositório nesse ponto do histórico. Consulte Git – Marcação.

Captura de tela que mostra marcas git na janela repositório Git.

Graph: Esta seção visualiza o estado do seu ramo. Ele tem três subseções:

  • Entrada mostra commits recebidos aos quais sua equipe contribuiu.
  • Saída mostra seus commits locais que ainda não foram enviados.
  • O Histórico Local mostra o restante das alterações rastreadas pelo repositório local.

Confirmar: para abrir esta seção, selecione qualquer confirmação na seção Graph . Você pode verificar as alterações que um commit introduziu selecionando-as, o que mostra uma comparação. Por exemplo, a captura de tela anterior mostra as alterações que um commit introduziu no arquivo Resize.cs.

Branches/Marcas: o Git capacita os usuários a fazer várias tarefas e experimentar seu código por meio de branches. A ramificação no Git é útil em vários cenários, especialmente ao trabalhar em projetos complexos com vários recursos ou ao colaborar com uma equipe. Você pode ver tags no repositório e navegar para qualquer tag. Sua equipe pode usar marcas git (por exemplo), v1.0para marcar pontos no histórico do repositório e exibir o estado do repositório nesse ponto do histórico. Consulte Git – Marcação.

Captura de tela que mostra marcas git na janela repositório Git.

Com Branches / Tags selecionadas, você verá as seções Graph e Commit à direita.

Graph: Esta seção visualiza o estado do seu ramo. Ele tem três subseções:

  • Entrada mostra commits recebidos aos quais sua equipe contribuiu.
  • Saída mostra seus commits locais que ainda não foram enviados.
  • O Histórico Local mostra o restante das alterações rastreadas pelo repositório local.

Confirmar: para abrir esta seção, selecione qualquer confirmação na seção Graph . Você pode verificar as alterações que um commit introduziu selecionando-as, o que mostra uma comparação. Por exemplo, a captura de tela anterior mostra as alterações que um commit introduziu no arquivo Resize.cs.

Navegar por commits em detalhes

Os atalhos de teclado Alt+Seta para cima ou Alt+Seta para baixo permitem que você alterne entre as seções no painel esquerdo.

Você pode navegar por qualquer ramo local ou remoto sem precisar mudar de ramo. Quando encontrar uma confirmação na qual deseja se concentrar, selecione o botão Abrir em Nova Guia para abrir a confirmação em uma guia diferente.

Captura de tela mostrando como abrir um commit em uma nova guia.

Captura de tela da guia de detalhes do commit.

Captura de tela da guia de detalhes do commit.

Dica

Para exibir sua confirmação em tela inteira, desanexe a guia Confirmar e maximize a janela Confirmar usando o botão Maximizar . Você também pode selecionar sua configuração de diferenciação favorita selecionando Configuração de Difusão (o ícone de engrenagem).

Captura de tela dos detalhes do commit em tela cheia com configurações de comparação.

Dica

Para exibir sua confirmação em tela inteira, desanexe a guia Confirmar e maximize a janela Confirmar usando o botão Maximizar . Você também pode selecionar sua configuração de diferenciação favorita selecionando Configuração de Difusão (o ícone de engrenagem).

Captura de tela dos detalhes do commit em tela cheia com configurações de comparação.

Solicitações de pull

Se você estiver analisando ramificações e commits, alterne para Solicitações de Pull no painel esquerdo.

A seção Solicitações de Pull mostra uma lista de solicitações de pull ativas.

Navegar e abrir pull requests

Selecione qualquer pull request para abrir uma visualização de revisão embutida sem precisar verificar a ramificação. Encontre solicitações de pull da janela Git Repository (View>Git Repository), Git Changes, ou Git>GitHub (ou Azure DevOps) >View Pull Requests.

Captura de tela da lista de solicitações pull à esquerda e a visão geral da solicitação de pull selecionada à direita com a descrição e os arquivos alterados.

  • Descrição do pull request, arquivos alterados, commits, itens relacionados e revisores em uma única exibição.
  • Alterne entre solicitações de pull ativas sem interromper a ramificação de trabalho.
  • Exiba detalhes e alterações de commits individuais na solicitação de pull.

Comente e discuta

Deixe feedback diretamente na visualização de diff e continue a conversa sem mudar para o navegador.

Captura de tela de uma comparação de arquivos com um thread de comentários em linha de uma solicitação de pull que inclua uma resposta e uma ação de resolução.

  • Adicione comentários em linha em linhas específicas, responda aos comentários e resolva discussões.
  • Exibir indicadores de comentário por arquivo na lista Alterações .
  • Exiba imagens embutidas e texto formatado nos comentários, como na experiência da Web.

Aprovar, concluir e mesclar

Quando estiver pronto, aprove e conclua a solicitação de pull no Visual Studio. As ações de voto e finalização estão disponíveis em várias visualizações, para que você possa aprovar enquanto revisa as alterações.

  • Aprove a solicitação de pull. Mais opções de voto estão disponíveis no menu suspenso do Azure DevOps.
  • Veja verificações de status, conflitos de mesclagem e aprovações necessárias na aba Visão geral.
  • Conclua ou mescle uma solicitação de pull, com opções para converter em rascunho e abandonar ou fechar.

Você pode gerenciar essa experiência em Ferramentas>Opções>Recursos de Visualização:

  • Comentários do Pull Request
  • Visualizar pull requests de um repositório Git

Para obter fluxos de trabalho detalhados para comentar solicitações de pull em arquivos e em exibições de diferenciação, consulte Criar uma solicitação de pull em Visual Studio.

Exibição de histórico de múltiplas ramificações

Novidade na versão 17.7: ao abrir a janela do repositório Git, você começará na exibição de branch única. Você pode selecionar uma ramificação para adicionar a ramificação e os commits a uma exibição de histórico com múltiplas ramificações, que adiciona dicas visuais que tornam a interação com várias ramificações mais eficaz.

Captura de tela da visualização do histórico de várias ramificações no Visual Studio.

Há linhas coloridas e rótulos de branch no lado esquerdo do modo de exibição Histórico Local que ajudam a facilitar o rastreamento de quais commits pertencem a cada branch. Você pode usar a lista de branches na parte superior da tabela para rolar entre as branches com mais facilidade e saber imediatamente quais branches aparecem no gráfico.

Na seção Ramificações/Marcações, passe o mouse sobre uma ramificação para mostrar o botão Alternar Ramificação no Histórico (o ícone é semelhante a um olho). Usando o botão de foco, você pode selecionar as ramificações que aparecerão na exibição do histórico de commits.

Você pode usar os botões da barra de ferramentas na parte superior da visualização do histórico de commits para personalizar a exibição e filtrar as ramificações.

  • Mostrar somente o primeiro pai: limite o histórico para mostrar apenas o histórico de commits como uma única linha, e não ramificações laterais com a própria sequência de commits.

  • Mostrar Branches Locais: alterne se deseja ou não mostrar rótulos para o branch local no modo de exibição de histórico.

  • Mostrar Branches Remotos: alterne se deseja ou não mostrar rótulos para branches remotos que contribuem para o histórico de confirmação que você está exibindo.

  • Mostrar Marcas: alterne se deseja ou não mostrar rótulos para marcas.

    Mostrar Branches Locais, Mostrar Branches Remotos e Mostrar Tags referem-se a todos os indicadores de rótulo nos commits mostrados no lado esquerdo da exibição do histórico.

    Captura de tela que mostra rótulos de indicador para ramificações e marcações na exibição do histórico.

Novidade na versão 17.14: Para se concentrar em confirmações não sincronizadas, você pode usar o botão da barra de ferramentas Mostrar Apenas Saída/Entrada para alterar a exibição do histórico para mostrar somente confirmações de saída (ainda não enviadas do seu branch atual) e confirmações de entrada (novas no repositório remoto).

Captura de tela mostrando a janela do Repositório Git com o botão Mostrar Somente Saída/Entrada da barra de ferramentas.

Você também pode selecionar Mostrar Saída/Entrada Somente no menu de contexto clicando com o botão direito do mouse em qualquer lugar no modo de exibição de histórico.

Comparar commits

Para comparar dois commits na sua branch, use a tecla CTRL para selecionar os dois commits que você deseja comparar. Em seguida, clique com o botão direito do mouse em um deles e selecione Comparar Confirmações.

Captura de tela de como comparar dois commits.

Captura de tela de como comparar dois commits.

Captura de tela de commits comparados.

Captura de tela de commits comparados.

Dica

Semelhante aos Detalhes de Confirmação, você pode usar o botão Abrir em Nova Guia para abrir a comparação em uma guia diferente ou maximizá-la na tela.

Examinar o escopo do commit com um resumo de alterações

Em Git>Ver histórico do branch, abra qualquer commit e selecione Abrir resumo das alterações. Visual Studio mostra linhas alteradas de vários arquivos em uma exibição unificada, o que é útil para uma passagem rápida antes de uma revisão mais profunda arquivo por arquivo.

Captura de tela que mostra o resumo de alterações abertas em detalhes do commit.

Criar uma branch a partir de um commit

No Visual Studio, você pode usar o painel Git Graph na janela Git Repository para criar branches a partir de compromissos anteriores. Para fazer isso, clique com o botão direito do mouse no commit do qual você deseja criar uma branch e selecione Nova Branch.

Captura de tela do painel Git Graph da janela do repositório Git.

Captura de tela do painel Git Graph da janela do repositório Git.

Observação

O comando equivalente para essa ação é git branch <branchname> [<commit-id>].

Comparar branches

Comparar ramificações fornece uma visão geral das diferenças entre duas ramificações, o que pode ser útil antes de criar um pull request, realizar uma mesclagem ou até mesmo excluir uma ramificação.

Diagrama que ilustra como o Git compara branches.

Para comparar sua branch atualmente em check-out com outras branches usando o Visual Studio, você pode usar o seletor de branch hospedado na barra de status e a janela de ferramentas Alterações do Git para escolher qualquer branch local ou remota para comparar. Clique com o botão direito do mouse no branch que você está direcionando e selecione Comparar com o Branch Atual. Como alternativa, você pode utilizar a lista de ramificações na janela do Repositório Git para acessar o mesmo comando.

Animação mostrando os pontos de entrada para comparação de branches.

Selecionar Comparar com o Branch Atual abre a experiência de comparação de branches em que você pode navegar na lista Alterações e escolher o arquivo que deseja comparar.

Captura de tela mostrando como comparar branches usando a exibição de comparação.

Captura de tela mostrando como comparar branches usando a exibição de comparação.

Dica

Se preferir uma comparação embutida, você pode usar o ícone de engrenagem Opções de Configuração de Comparação e alternar para uma exibição de comparação embutida. Captura de tela mostrando as Opções de Configuração de Comparação disponíveis.

Fazer check-out de commits

Fazer check-out de um commit pode ser benéfico de várias maneiras. Por exemplo, ele permite que você volte para um ponto anterior no histórico do repositório em que você pode executar ou testar seu código. Também pode ser útil se você quiser revisar o código de uma branch remota (a branch de um colega, por exemplo). Dessa forma, você não precisará criar uma ramificação local se não estiver planejando contribuir com ela. Nesse caso, basta fazer check-out da dica da branch remota que você deseja revisar.

Diagrama que ilustra o processo de check-out de commit do Git.

Para fazer check-out de uma confirmação anterior no Visual Studio, abra a janela repositório Git , clique com o botão direito do mouse na confirmação para a qual você deseja voltar e selecione check-out (–desanexar). O Visual Studio mostra um diálogo de confirmação explicando que, ao fazer check-out de um commit, você estará em um estado de HEAD destacado. Isso significa que o HEAD do seu repositório vai apontar diretamente para um commit em vez de para uma branch.

Animação mostrando os pontos de entrada do commit de check-out.

Agora que você está em um estado de cabeçalho desanexado, fique à vontade para executar e testar seu código ou até mesmo explorar e confirmar alterações. Quando terminar de explorar e quiser voltar à sua branch, você poderá escolher descartar suas alterações fazendo check-out de uma branch existente ou escolher manter suas alterações criando uma branch primeiro.

Importante

Os commits criados em um estado de cabeçalho destacado não estão associados a nenhuma branch e podem ser coletados como lixo pelo Git após você fazer check-out de uma branch. Por isso, para manter suas alterações, é recomendável criar uma nova branch antes de fazer check-out de uma branch. Por exemplo, os commits C5 e C6 serão coletados como lixo se fizermos check-out do Main sem criar uma nova branch. Diagrama que ilustra os commits de cabeçalho destacado no Git.

Para saber mais sobre o estado de cabeçalho desanexado, confira a documentação Detached Head do Git.

Fazer check-out da dica de uma branch remota pode ser útil se você quiser revisar rapidamente uma pull request e avaliar as atualizações mais recentes. Para fazer isso no Visual Studio, primeiro certifique-se de buscar e obter as atualizações mais recentes do repositório remoto. Clique com o botão direito do mouse na branch remota que você deseja revisar e selecione Checkout Tip Commit.

Captura de tela que mostra a opção Checkout Tip Commit.

Captura de tela que mostra a opção Checkout Tip Commit.

Exibir o histórico de alterações linha a linha com o Git Blame

O Git Blame mostra quem modificou pela última vez cada linha de código em um arquivo, juntamente com quando e por que a alteração foi feita. Esse recurso é útil quando você precisa entender o histórico e o contexto por trás de alterações de código específicas, rastrear a origem de um bug ou identificar o autor de uma implementação específica.

Acessar anotações do Git Blame

Você pode exibir anotações do Git Blame diretamente do editor de código ou de Gerenciador de Soluções.

No editor de código:

  1. Abra um arquivo no editor.
  2. Clique com o botão direito do mouse em qualquer lugar no editor de código.
  3. Selecione Git>Blame (Anotar).

From Gerenciador de Soluções:

  1. Clique com o botão direito do mouse em um arquivo no Gerenciador de Soluções.
  2. Selecione Git>Blame (Anotar).

As anotações Blame aparecem na margem esquerda do editor, exibindo o nome do autor, a data de commit e o link de commit. O arquivo é aberto no editor com anotações de culpa visíveis.

Explorar detalhes do commit em anotações Blame

Depois que as anotações de culpa estiverem visíveis no editor, você poderá interagir com elas para obter mais informações:

  • Clique na confirmação para Exibir detalhes: você pode exibir a confirmação completa, em que é possível ver todos os arquivos alterados nessa confirmação e acessar opções adicionais, como comparar a versão atual com a versão anterior.

Dica

O Git Blame é mais útil para entender o comportamento inesperado ou rastrear por que uma alteração específica foi feita.

Quando o Git Blame está indisponível

O Git Blame está disponível somente para arquivos rastreados que foram confirmados no seu repositório Git. Se a opção Git>Blame não aparecer, verifique a tabela abaixo para obter causas e soluções comuns.

Cenário Solução
O arquivo não é rastreado Verifique a janela Alterações do Git . Se o arquivo aparecer em Arquivos Não Rastreados, prepare e confirme-o primeiro.
O arquivo está em .gitignore Remova o arquivo de .gitignore, adicione-o ao repositório e faça commit.
Arquivo binário Blame só funciona com arquivos de texto, como código-fonte (.cs, .js, .py), arquivos de configuração (.json, .xml) e documentação (.md, .txt). Em vez disso, para arquivos binários (.dll, .exeimagens), useo Histórico de Exibição do >.
Sem histórico de commits Faça pelo menos uma confirmação que inclua o arquivo.
Estado HEAD desanexado Verifique a barra de status. Se desanexado, verifique uma ramificação na janela do Repositório Git. Cofira Verificar commits.
Arquivo muito grande Por questões de desempenho, o Blame pode ser desabilitado em arquivos extremamente grandes. Use Git>Ver histórico em vez disso.

Alternativa para todos os cenários: Clique com o botão direito do mouse no arquivo e selecione Git>Ver Histórico para ver todos os commits que modificaram o arquivo.