Compartilhar via


Atualizar código com busca, mesclagem e pull

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Visual Studio 2019 | Visual Studio 2022

Quando houver vários colaboradores para um projeto, mantenha seu repositório Git local atualizado baixando e integrando o trabalho que outras pessoas carregaram no repositório remoto do projeto. Estes comandos do Git atualizam seu repositório local:

  • A busca do Git baixa as novas confirmações que outras pessoas carregaram no repositório remoto. As ramificações de acompanhamento remoto no cache de repositório local são atualizadas. As ramificações locais permanecem inalteradas.
  • A mesclagem do Git integra confirmações de um ou mais branches de origem em um branch de destino.
  • A rebase do Git integra confirmações de um branch de origem em um branch de destino, mas usa uma estratégia diferente da mesclagem do Git.
  • O pull do Git executa uma busca e, em seguida, uma mesclagem ou rebase para integrar confirmações buscadas ao branch local atual.

O Visual Studio usa um subconjunto desses comandos git ao sincronizar seu repositório local com um repositório remoto.

Para obter uma visão geral do fluxo de trabalho do Git, consulte o tutorial do Git do Azure Repos.

Este artigo fornece procedimentos para as seguintes tarefas:

  • Baixar alterações com fetch
  • Atualizar branches com mesclagem ou rebase
  • Baixar alterações e atualizar branches com pull

Baixar alterações com fetch

O Git fetch baixa confirmações de branch remoto e objetos de arquivo referenciados que não existem em seu repositório local e atualiza os branches de acompanhamento remoto no cache de repositório local. Os branches de acompanhamento remoto são cópias somente leitura em cache locais de branches remotos e não são suas ramificações locais. A busca do Git não atualiza seus branches locais. Por exemplo, se um repositório remoto designado por origin um branch tiver um bugfix3 branch, o Git fetch atualizará o branch de acompanhamento remoto nomeado origin/bugfix3 e não o branch local bugfix3 . Você pode usar branches de acompanhamento remoto para:

  • Compare um branch de acompanhamento remoto com uma ramificação local para examinar as alterações buscadas.
  • Mesclar um branch de acompanhamento remoto em uma ramificação local.
  • Crie uma nova ramificação local a partir de um branch de acompanhamento remoto.

O Visual Studio 2022 fornece uma experiência de controle de versão do Git usando o menu Git , as Alterações do Git e os menus de contexto no Gerenciador de Soluções. O Visual Studio 2019 versão 16.8 também oferece a interface do usuário do Git do Team Explorer . Para obter mais informações, consulte a guia Visual Studio 2019 – Team Explorer .

  1. Na janela Alterações do Git , escolha Buscar. Em seguida, selecione saída/entrada para abrir a janela do Repositório Git .

    Captura de tela dos botões Buscar e link de entrada na janela Alterações do Git do Visual Studio 2019.

    Você também pode escolher Buscar no menu Git.

    Captura de tela da opção Buscar no menu Git no Visual Studio 2019.

  2. Na janela repositório Git , as confirmações buscadas aparecem na seção Entrada . Selecione uma confirmação buscada para ver a lista de arquivos alterados nessa confirmação. Selecione um arquivo alterado para ver uma exibição diferida do conteúdo alterado.

    Captura de tela do menu Repositório Git no Visual Studio 2019.

Dica

O Fetch não excluirá branches de acompanhamento remoto no cache de repositório local que não têm mais um equivalente remoto. Para configurar o Visual Studio para podar branches de acompanhamento remoto obsoletos durante um Fetch:

  • Selecione AsConfigurações Globais do Git de Controle > doCódigo-Fontede> de >.
  • Defina os branches remotos prune durante a opção de busca como True.

Após uma busca do Git, você pode comparar uma ramificação local com seu branch de acompanhamento remoto correspondente para ver o que foi alterado no branch remoto. Se você decidir atualizar seu branch local atual com alterações buscadas, poderá executar uma mesclagem ou rebase do Git. Ou você pode executar o pull do Git, que combina uma busca do Git com uma mesclagem ou rebase do Git. A mesclagem do Git e a rebase do Git atualizam um branch de destino aplicando confirmações de um branch de origem nele. No entanto, a mesclagem do Git e a rebase do Git usam estratégias diferentes. Para obter mais informações, consulte Atualizar branches com mesclagem ou rebase e Quando rebasear versus mesclar.

Atualizar branches com mesclagem ou rebase

A mesclagem do Git e a rebase do Git integram confirmações de um branch de origem ao branch local atual (branch de destino). A mesclagem do Git executa uma mesclagem rápida ou sem avanço rápido. A mesclagem sem avanço rápido também é conhecida como mesclagem de três vias ou mesclagem verdadeira . A rebase do Git é outro tipo de mesclagem. Esses tipos de mesclagem são mostrados no diagrama a seguir.

Diagrama mostrando as confirmações de antes e depois ao usar mesclagem e rebase.

A mesclagem do Git e a rebase do Git são amplamente usadas no fluxo de trabalho do Git. Ao trabalhar em um recurso local ou branch de bugfix, é uma prática comum:

  1. Mantenha sua ramificação local main atual com seu equivalente remoto puxando periodicamente para buscar e mesclar confirmações remotas.
  2. Integre as atualizações de ramificação local main ao branch de recursos local usando uma rebase ou mesclagem.
  3. Faça backup do seu trabalho no branch de recursos local enviando-o por push para o branch remoto correspondente.
  4. Após a conclusão do recurso, crie uma solicitação de pull para mesclar seu branch de recursos remoto no branch remoto main .

Essa abordagem ajuda você a:

  • Lembre-se do trabalho recente de outras pessoas que podem afetar seu trabalho.
  • Resolva prontamente quaisquer conflitos entre seu trabalho e o de outras pessoas.
  • Aplique seu novo recurso sobre up-toconteúdo do projeto de data.
  • Obtenha uma revisão de solicitação de pull do seu trabalho.

Merge

Para a mesclagem do Git, se a ponta do branch de destino existir dentro do branch de origem, o tipo de mesclagem padrão será uma mesclagem de avanço rápido. Caso contrário, o tipo de mesclagem padrão será uma mesclagem sem avanço rápido.

Uma mesclagem rápida do Git nunca pode ter um conflito de mesclagem porque o Git não aplicará uma mesclagem rápida se a ponta do branch de destino tiver divergido do branch de origem. Por padrão, o Git usa uma mesclagem rápida sempre que possível. Por exemplo, o Git aplicará uma mesclagem de avanço rápido em uma ramificação local que você só atualiza puxando de seu branch de equivalente remoto.

Uma mesclagem git sem avanço rápido gera uma nova "confirmação de mesclagem" do branch de destino que integra as alterações do branch de origem com as alterações de branch de destino. As alterações aplicáveis são aquelas feitas após a última confirmação que é comum a ambas as ramificações. No diagrama anterior, commit C é a última confirmação comum em ambos os branches. Se qualquer alteração de branch de origem entrar em conflito com qualquer alteração de branch de destino, o Git solicitará que você resolva o conflito de mesclagem. A confirmação de mesclagem (L) contém o branch de origem integrado e as alterações de branch de destino. As dicas de ramificação de origem e de destino (K e E) são os pais da confirmação de mesclagem. No histórico de confirmação do branch, uma confirmação de mesclagem é um marcador útil para uma operação de mesclagem e mostra claramente quais branches foram mesclados.

A mesclagem do Git modifica apenas o branch de destino. O branch de origem permanece inalterado. Ao encontrar um ou mais conflitos de mesclagem, você deve resolvê-los para concluir a mesclagem. Ou você pode cancelar a operação de mesclagem e retornar o branch de destino ao estado anterior.

Para obter mais informações sobre opções e estratégias de mesclagem, consulte as estratégias manuais de referência do Git e de mesclagem do Git.

Dica

Se o branch de origem for um branch de acompanhamento remoto, verifique se o branch está up-to-date executando uma busca do Git antes da mesclagem.

  1. Escolha o Git > Gerenciar Branches na barra de menus para abrir a janela do Repositório Git .

    Captura de tela da opção Gerenciar Branches no menu Git do Visual Studio 2019.

  2. Na janela repositório Git , clique com o botão direito do mouse no branch de destino e selecione Checkout.

    Captura de tela da opção Checkout na janela repositório Git do Visual Studio 2019.

  3. Clique com o botão direito do mouse no branch de origem e selecione Mesclar <o branch> de origem no <branch de destino>.

    Captura de tela da opção Mesclagem na janela Repositório Git do Visual Studio 2019.

  4. O Visual Studio exibirá uma mensagem de confirmação após uma mesclagem bem-sucedida.

    Captura de tela da mensagem de confirmação de mesclagem na janela repositório Git do Visual Studio 2019.

    Se a mesclagem for interrompida devido a conflitos de mesclagem, o Visual Studio notificará você. Você pode resolver os conflitos ou cancelar a mesclagem e retornar ao estado de pré-mesclagem.

    Captura de tela da mensagem de conflito de mesclagem na janela repositório Git do Visual Studio 2019.

Rebase

O Git rebase reentança o histórico de confirmação do branch de destino para que ele contenha todas as confirmações do branch de origem, seguido por todas as confirmações de branch de destino desde a última confirmação comum. Outra maneira de exibi-lo é que uma rebase git reproduza as alterações em seu branch de destino na parte superior do histórico do branch de origem. Se qualquer alteração de branch de origem entrar em conflito com qualquer alteração de branch de destino, o Git solicitará que você resolva o conflito de mesclagem. A rebase do Git não cria uma confirmação de mesclagem. Notavelmente, a rebase do Git altera a sequência de confirmações de branch de destino existentes, o que não é o caso das outras estratégias de mesclagem. No diagrama anterior, commit K' contém as mesmas alterações que K, mas tem uma nova ID de confirmação porque ele é vinculado novamente ao commit E em vez de C.

A rebase do Git modifica apenas o branch de destino. O branch de origem permanece inalterado. Ao encontrar um ou mais conflitos de mesclagem, você deve resolvê-los para concluir a rebase. Ou você pode cancelar a operação de rebase e retornar o branch de destino ao estado anterior.

Se você for a única pessoa trabalhando em seu recurso ou branch de bugfix, considere usar a rebase do Git para integrar novas main confirmações de branch a ele. Caso contrário, use a mesclagem do Git. Para obter mais informações sobre a rebase do Git e quando usá-lo, consulte Aplicar alterações com rebase e Rebase vs merge.

Dica

Se o branch de origem for um branch de acompanhamento remoto, verifique se o branch está up-to-date executando uma busca do Git antes da rebase.

  1. Escolha o Git > Manage Branches para abrir a janela do Repositório Git .

    Captura de tela da opção Gerenciar Branches no menu Git do Visual Studio 2019.

  2. Na janela repositório Git , clique com o botão direito do mouse no branch de destino e selecione Checkout.

    Captura de tela da opção Checkout no menu de contexto do branch na janela Repositório Git do Visual Studio 2019.

  3. Clique com o botão direito do mouse no branch de origem e selecione Rebase <target-branch> no <branch> de origem.

    Captura de tela da opção Rebase no menu de contexto do branch na janela Repositório Git do Visual Studio 2019.

  4. O Visual Studio exibirá uma mensagem de confirmação após uma rebase bem-sucedida.

    Captura de tela da mensagem de confirmação de rebase na janela repositório Git do Visual Studio 2019.

    Se a rebase for interrompida devido a conflitos de mesclagem, o Visual Studio notificará você. Você pode resolver os conflitos ou cancelar a rebase e retornar ao estado de pré-rebase.

    Captura de tela da mensagem de conflito de rebase na janela repositório Git do Visual Studio 2019.

Baixar alterações e atualizar branches com pull

Por padrão, o pull do Git combina uma busca do Git e uma mesclagem do Git para atualizar seu branch local atual de seu equivalente remoto. Opcionalmente, o pull do Git pode executar uma rebase git em vez de uma mesclagem do Git.

Ao contrário do git fetch, o pull do Git atualizará seu branch local atual imediatamente após o download de novas confirmações do repositório remoto. Use o pull do Git quando souber que deseja atualizar seu branch local atual logo após uma busca do Git.

Dica

Para configurar o Visual Studio para se basear novamente em vez de mesclar quando você efetuar pull:

  1. No menu Git, acesse AsConfigurações Globais do Git de Controle > doCódigo-Fontedas> de >.
  2. Defina a ramificação local Rebase ao puxar a opção para True.
  1. Na janela Alterações do Git , escolha Pull.

    Captura de tela do botão Pull na janela Alterações do Git do Visual Studio 2019.

    Você também pode escolher Pull no menu Git.

    Captura de tela da opção Pull no menu Git no Visual Studio 2019.

  2. Uma mensagem de confirmação é exibida quando a operação de pull é concluída.

    Captura de tela da mensagem de confirmação de pull na janela Alterações do Git no Visual Studio 2019.

    Se houver conflitos durante a parte de mesclagem da operação de pull, o Visual Studio notificará você. Você pode resolver os conflitos ou cancelar a mesclagem e retornar ao estado de pré-mesclagem.

    Captura de tela da mensagem de conflito de pull na janela Alterações do Git no Visual Studio 2019.

Observação

No Visual Studio, a Sincronização executa um Pull e, em seguida, um Push para sincronizar um branch local e remoto. Para obter mais informações sobre Sincronização, consulte Usar o git fetch, pull, push e sincronização para controle de versão no Visual Studio.

Próximas etapas