Sobes.tech
Junior

O que é um force push no Git?

sobes.tech IA

Resposta da IA

Force push no Git (git push --force ou git push -f) sobrescreve a história do repositório remoto. Em vez de adicionar commits sobre o ramo existente no servidor remoto, força a que o ramo remoto seja idêntico ao local.

O principal risco: pode perder irrevogavelmente commits que estavam no ramo remoto, mas que não estão no seu ramo local.

Aplicado com cautela, geralmente nos seguintes casos:

  • Corrigir o último commit: Você fez git commit --amend localmente e quer atualizar o servidor remoto com esse commit corrigido.
  • Rebase: Você realizou git rebase para reescrever a história e quer atualizar o ramo remoto para refletir a nova história.
  • Reverter para um estado anterior: Você quer substituir completamente o ramo remoto por uma versão antiga.

Não é recomendado usar force push em ramos nos quais outros desenvolvedores trabalham, pois isso pode interromper seus fluxos de trabalho.

Uma alternativa que não reescreve a história: git push --force-with-lease. Ela fará um push forçado somente se o ramo remoto não contiver commits que você não possui localmente. Isso reduz o risco de perder alterações de terceiros.

// Uso de force push (perigoso!)
git push origin main --force

// Alternativa mais segura
git push origin main --force-with-lease