Gerenciar repositórios Git no Visual Studio

A janela Git Repository oferece uma experiência Git no ecrã completo que ajuda o utilizador a gerir o seu repositório Git e a permanecer atualizado com os projetos da sua equipa. Por exemplo, talvez seja necessário redefinir, reverter ou escolher confirmações seletivamente ou apenas limpar seu histórico de confirmações. A janela Git Repository também é um ótimo lugar para visualizar e gerenciar os seus ramos.

O controle de versão com o Visual Studio é fácil com o Git. Além disso, você pode trabalhar remotamente com o provedor Git de sua escolha, como o GitHub ou o Azure DevOps. Ou, você pode trabalhar localmente sem nenhum provedor.

Abra a janela Repositório Git

Para abrir a janela repositório Git, escolha Ver>repositório Git (ou pressione Ctrl+0, Ctrl+R), ou pressione Ctrl+Q e, em Funcionalidades, procure repositório Git.

Sugestão

Para manter esta janela aberta ao reiniciar, escolhaDefinições> e assinale a caixa "Restaurar a janela do Repositório Git ao reiniciar".

Trabalhar em múltiplas ramificações com worktrees do Git

Uma árvore de trabalho Git é um diretório de trabalho separado para o mesmo repositório. As árvores de trabalho permitem-te trabalhar em vários ramos ao mesmo tempo sem ter de guardar alterações ou clonar o repositório novamente.

Para criar e abrir uma árvore de trabalho:

  1. Na janela do Repositório Git, clique com o botão direito numa ramificação e selecione Nova Árvore de Trabalho. Podes criar um ramo para a árvore de trabalho ou usar o ramo selecionado.

    Também podes clicar com o botão direito num commit no gráfico de histórico e selecionar Nova Árvore de Trabalho para criar uma árvore de trabalho a partir desse commit.

  2. Abra a árvore de trabalho selecionando Abrir Árvore de Trabalho na Janela Atual ou Abrir Árvore de Trabalho na Nova Janela.

    Captura de ecrã do menu contextual do Repositório Git com comandos para criar, abrir e eliminar uma árvore de trabalho.

As árvores de trabalho aparecem com ramificações na janela do Repositório Git . Para mudar para uma árvore de trabalho, selecione-a na lista de ramificações, no seletor de ramificações ou no seletor de repositório.

Captura de ecrã das árvores de trabalho listadas com ramificações na janela do Repositório Git.

Para remover uma árvore de trabalho, clique com o botão direito na árvore de trabalho na janela do Repositório Git e selecione Eliminar Árvore de Trabalho.

Para mais informações e para partilhar feedback, consulte o pedido da funcionalidade de suporte para árvores de trabalho do Git.

Alterar o último commit (emendar)

A atualização da última confirmação é chamada alteração no Git e é um caso de uso comum. Às vezes, você só precisa atualizar sua mensagem de confirmação, ou talvez precise incluir uma alteração de última hora.

Você pode alterar uma confirmação na linha de comando usando o seguinte comando:

git commit --amend

A janela Repositório Git facilita a atualização da mensagem de confirmação mais recente. Abra os detalhes de confirmação da última confirmação clicando duas vezes nela e selecione a opção Editar ao lado da mensagem de confirmação.

Captura de tela da edição de uma mensagem de confirmação.

Captura de tela da edição de uma mensagem de confirmação.

Quando terminar de editar a mensagem de confirmação, selecione Alterar.

Captura de ecrã a mostrar como guardar uma mensagem editada selecionando Alterar.

Captura de ecrã que mostra a gravação de uma mensagem editada selecionando Emendar.

Se precisar incluir alterações de código no seu último commit, pode fazer isso na janela Git Changes. Marque a caixa de seleção Alterar e confirme as alterações.

Captura de tela da alteração de alterações de código usando a janela Alterações do Git.

Captura de tela da alteração de alterações de código usando a janela Alterações do Git.

Para saber mais sobre como alterar, incluindo como alterar mensagens de confirmação diferentes da mais recente, consulte Ferramentas do Git - Reescrevendo o histórico no site do Git.

Mesclar confirmações (squash)

Para combinar uma série de commits, o Git disponibiliza uma opção para condensá-los num único commit. Esta opção é útil se fizeres commits frequentes e acabares com uma longa lista de commits que queres limpar antes de enviar para um repositório remoto.

Você pode esmagar duas confirmações na linha de comando usando o seguinte comando:

git rebase -i HEAD~2

Em seguida, atualize pick para squash, salvar e atualizar a mensagem de confirmação.

Captura de ecrã a atualizar a seleção para squash.

Para mesclar confirmações no Visual Studio, use a tecla Ctrl para selecionar várias confirmações que você deseja mesclar. Em seguida, clique com o botão direito do mouse e selecione Squash Commits. O Visual Studio combina automaticamente suas mensagens de confirmação, mas às vezes é melhor fornecer uma mensagem atualizada. Depois de rever e atualizar a sua mensagem de confirmação, selecione o botão Squash.

Captura de ecrã de squash de commits no Visual Studio.

Captura de ecrã de squash de commits no Visual Studio.

Para saber mais sobre squashing, consulte Git Tools - Rewriting History no site do Git.

Mesclar e fazer rebase de ramificações

Se usar ramificações do Git para desenvolver funcionalidades diferentes, por vezes, precisa de integrar atualizações introduzidas por outras ramificações. Esta necessidade pode surgir enquanto ainda estás a trabalhar no ramo de funcionalidades. Também pode surgir quando terminas de trabalhar no ramo de funcionalidades e precisas de manter as alterações adicionando-as a outro ramo. No Git, você pode incluir essas atualizações mesclando ou rebaseando ramificações.

Observação

As instruções a seguir usam New_Feature como um nome de exemplo para uma ramificação de recurso. Substitua-o pelo nome da sua própria filial.

Para mesclar a ramificação principal em sua ramificação de recurso na linha de comando, use os seguintes comandos:

git checkout New_Feature
git merge main

Para fazer o mesmo no Visual Studio, consulte o branch feature clicando duas vezes na lista de branch. Em seguida, clique com o botão direito no 'main' e selecione Mesclar 'main' em 'New_Feature'.

Captura de tela da mesclagem de ramificações no Visual Studio.

Captura de tela da mesclagem de ramificações no Visual Studio.

Para rebasear a ramificação principal em sua ramificação de recurso na linha de comando, use os seguintes comandos:

git checkout New_Feature
git rebase main

Para fazer o mesmo no Visual Studio, mude para a ramificação de funcionalidade fazendo duplo clique nela na lista de ramificações. Em seguida, clique com botão direito principal e selecione Rebasear 'New_Feature' para 'principal'.

Captura de tela da redefinição de base de ramificações no Visual Studio.

Captura de tela da redefinição de base de ramificações no Visual Studio.

Para saber mais sobre fusões, rebase e ramificações em geral, consulte Git Branching no site do Git.

Copiar confirmações (escolha seletiva)

Copiar confirmações de uma ramificação para outra usando a funcionalidade *cherry-pick*. Ao contrário de um merge ou rebase, cherry-picking traz apenas as alterações dos commits que você seleciona, em vez de todas as alterações de uma branch. A escolha seletiva é uma ótima maneira de resolver esses problemas comuns:

  • Cometer acidentalmente no ramo errado. Selecione as alterações para o ramo correto e, em seguida, redefina o ramo original para a confirmação anterior.
  • Retirar um conjunto de commits feitos numa ramificação de funcionalidades, para serem mesclados de volta à sua ramificação principal mais rapidamente.
  • Transferência de commits específicos do branch principal sem rebasear o seu branch.

Para copiar alterações de uma confirmação para sua ramificação atual usando a linha de comando, use o seguinte comando:

git cherry-pick 7599e530

Para fazer o mesmo no Visual Studio, visualize a ramificação da qual você deseja escolher uma confirmação selecionando-a com um único clique. Em seguida, clique com o botão direito do rato no commit alvo e selecione Cherry-Pick.

Captura de tela de escolha seletiva no Visual Studio.

Captura de tela de escolha seletiva no Visual Studio.

Quando a operação é concluída, o Visual Studio mostra uma mensagem de êxito. A confirmação escolhida a dedo aparece na seção de saída.

Para saber mais sobre confirmações seletivas, consulte a página da Web do Git para obter o comando cherry-pick.

Reverter alterações

Use o comando revert para desfazer as alterações feitas nos commits enviados para ramificações partilhadas. O comando revert cria uma nova confirmação que desfaz as alterações feitas em uma confirmação anterior. O comando revert não reescreve o histórico do repositório, o que o torna seguro de usar quando você estiver trabalhando com outras pessoas.

Para reverter as alterações feitas em uma confirmação usando a linha de comando, use os seguintes comandos. Substitua o ID de exemplo pelo ID de uma confirmação real em sua ramificação.

git revert 53333305
git commit

No exemplo seguinte, os comandos desfazem as alterações efetuadas no commit 53333305 e criam um novo commit no ramo. O compromisso original ainda está na história do Git. Para fazer o mesmo no Visual Studio, clique com o botão direito no commit que deseja reverter e selecione Reverter. Depois de confirmar a sua ação e a operação ser concluída, o Visual Studio exibirá uma mensagem de êxito, e um novo commit aparecerá na seção Saída.

Captura de tela da reversão no Visual Studio.

Captura de tela da reversão no Visual Studio.

Selecione a nova confirmação para confirmar que ela desfaz as alterações da confirmação revertida.

Captura de tela da confirmação de uma operação de reversão.

Captura de tela da confirmação de uma operação de reversão.

O item de menu Reverter pode estar acinzentado (desativado) em determinadas circunstâncias, como para confirmações de mesclagem ou quando uma operação do Git está em execução.

Para saber mais sobre como reverter alterações, consulte a página da Web do Git para obter o comando revert.

Redefinir uma ramificação para um estado anterior

Use o comando reset para trazer uma branch no teu repositório local de volta ao conteúdo de um commit anterior. Esta ação descarta todas as alterações feitas após o commit para o qual redefiniste o teu ramo.

Advertência

Não redefina ramificações partilhadas, pois pode eliminar o trabalho de outras pessoas. Em vez disso, use o comando revert.

Para redefinir uma ramificação para um estado anterior usando a linha de comando, use o seguinte comando. Substitua o ID de exemplo pelo ID de uma confirmação real em sua ramificação.

git reset --hard 53333305

A parte --hard do comando diz ao Git para repor os arquivos ao estado do commit anterior e descartar quaisquer alterações preparadas. Para fazer o mesmo no Visual Studio, clique com o botão direito do rato no commit para o qual pretende redefinir a sua branch e selecione Redefinir>Eliminar alterações (--hard).

Captura de tela que mostra a redefinição de uma ramificação no Visual Studio.

Captura de tela que mostra a redefinição de uma ramificação no Visual Studio.

Para saber mais sobre como redefinir ramificações, consulte a página da Web do Git para obter o comando reset.