Sua branch Git divergiu: escolha merge ou rebase
Os blocos são casos diferentes, não um script único. Escolha o caso do seu repositório. Substitua branches, caminhos e VERIFIED_COMMIT antes de usar. Comandos de cancelamento só valem para sua operação ativa; não execute ambas as alternativas.
Resposta curta
Uma branch diverge quando a ponta local e o upstream têm commits ausentes do outro lado. Faça fetch, examine ambos e escolha como combiná-los. Merge preserva históricos; rebase reaplica commits locais sobre o upstream e muda seus IDs. O aviso descreve o grafo, não comprova perda de arquivos.
Exemplo e condições
O exemplo usa main acompanhando origin/main, com dois commits locais e um remoto. Confira seus nomes reais e o upstream. Fetch atualiza a referência de acompanhamento remoto, sem integrar sozinho o histórico à branch atual. Um remoto renomeado ou uma branch sem upstream exige nomes diferentes nos comandos.
Inspecione antes de alterar
Leia status e branch -vv antes de fetch origin. A contagem esquerda/direita de HEAD...origin/main mostra commits exclusivos de cada lado. Examine grafo e patches: dois contra um não informa se editaram a mesma função. Não diagnostique apenas pela contagem ou por uma referência remota desatualizada.
git status --short
git branch -vv
git fetch origin
git rev-list --left-right --count HEAD...origin/main
git log --oneline --graph --decorate HEAD origin/mainMantenha referência ou checkout separado
Crie rescue/before-sync na ponta local e salve mudanças sem commit separadamente. A branch preserva histórico confirmado; stash conferido tem cobertura diferente para arquivos rastreados, novos e ignorados. Verifique a cópia. Integrar sobre trabalho local não relacionado dificulta entender conflitos e recuperação.
git branch rescue/before-sync HEADPrimeiro fluxo
Escolha merge quando convém preservar o histórico, especialmente para commits já compartilhados. Merge origin/main combina o upstream baixado com a branch atual e normalmente registra ambos os pais na divergência. Revise o diff e as verificações do projeto antes de publicar. Uma integração concluída não garante código combinado correto.
git merge origin/mainEscolha o outro resultado deliberadamente
Use rebase para commits locais que a política da equipe permite reescrever. Rebase origin/main reaplica o trabalho sobre a ponta baixada, normalmente com novos IDs. Colegas podem depender dos IDs antigos. Um grafo linear não autoriza reescrita de branch compartilhada ou desvio das regras de proteção.
git rebase origin/mainLimites e exceções
Em conflitos de merge, leia status, resolva e prepare os arquivos e conclua; merge --abort abandona essa integração quando suas condições permitem. Em rebase, resolva a etapa atual e use rebase --continue; podem ocorrer várias paradas. Use rebase --abort para sair do rebase ativo, sem misturar os fluxos.
git status
git merge --abort
git rebase --abortConflitos e limpeza
Reset --hard origin/main não é solução genérica para divergência: remove daquela branch o histórico local separado e pode sobrescrever arquivos rastreados. É uma decisão de abandonar trabalho, enquanto aqui combinamos históricos desejados. Se quiser descartar commits, examine-os e preserve as cópias necessárias em outro procedimento.
Confira o resultado
Confira grafo, status e diferença para origin/main e execute verificações relevantes. Push normal pode ser rejeitado se o remoto avançou depois do fetch. Baixe e revise o novo estado, sem recorrer automaticamente a force push. Mantenha o resgate até revisar a integração e seus efeitos.
git status --short
git log -8 --oneline --graph --decorate
git diff origin/main HEADPerguntas frequentes
Por que pull pede estratégia? Inclui fetch e integração, que pode ser ambígua sem política. Merge evita conflitos? Não, os dois métodos podem encontrá-los. Rebase é sempre melhor? Não; compartilhamento e política de histórico da equipe são mais importantes que uma preferência universal.
Revise a operação no FluxGit
Use o histórico visual e a visão de alterações do FluxGit para revisar a operação e os commits relevantes. Mantenha as verificações de branch, compartilhamento e arquivos locais do exemplo. A página de download apresenta os builds e plataformas disponíveis.