Menu
Coddy logo textTech

Git Force Push

Última atualização

Um git push normal é rejeitado quando seu branch local divergiu do remoto - o Git não sobrescreve commits que você talvez não tenha visto. Forçar o push ignora essa verificação e faz o branch remoto coincidir com o seu local. Você precisa disso após reescrever o histórico (um rebase ou amend), mas isso pode apagar commits de outras pessoas, então prefira o mais seguro --force-with-lease.

Experimente isso no terminal playground - um shell real no seu navegador, sem nada para instalar.

Um force push faz o branch remoto igualar seu histórico local reescrito - o commit divergente do remoto é descartado.

Sintaxe

CommandWhat it does
git push --forceSobrescreve o branch remoto, sem verificação de segurança
git push -fForma abreviada de --force
git push --force-with-leaseForça somente se ninguém mais fez push nesse meio-tempo
git push --force-with-lease origin featureForce push mais seguro para um branch nomeado

--force vs --force-with-lease

Behavior--force--force-with-lease
Sobrescreve o remotoSempreSomente se inalterado desde seu último fetch
Pode apagar commits de outrosSimRecusa, a menos que um fetch tenha renovado o lease
Recomendado para timesNãoSim

Perguntas frequentes sobre git force push

Quando preciso forçar o push?
Quando você reescreveu um histórico que já está no remoto - após um git rebase, um git commit --amend ou um rebase interativo que combinou commits. Seu branch local não coincide mais com o histórico do remoto, então um push normal é rejeitado e apenas um force push consegue atualizá-lo.
Qual é a diferença entre --force e --force-with-lease?
--force sobrescreve o branch remoto incondicionalmente, o que pode apagar silenciosamente commits que um colega enviou após seu último fetch. --force-with-lease só sobrescreve se o remoto ainda estiver no commit que você viu por último - se outra pessoa fez push nesse meio-tempo, ele recusa, protegendo o trabalho dela. Uma ressalva: qualquer fetch (inclusive o auto-fetch em segundo plano de uma IDE) renova o lease, então faça o push logo depois de conferir o remoto. Ainda assim, prefira-o em vez de --force em qualquer branch compartilhado.
Forçar o push é perigoso?
Pode ser. Em um branch compartilhado, um --force simples pode sobrescrever commits que outros enviaram, apagando de fato o trabalho deles do remoto. É seguro em um branch que só você usa. Na dúvida, use --force-with-lease, que falha com segurança em vez de esmagar alterações não vistas.
Como desfaço um force push?
Se você ainda tem os commits antigos localmente ou no git reflog, pode resetar seu branch de volta para eles e forçar o push novamente para restaurar o estado anterior. Este é mais um motivo para usar --force-with-lease - ele torna sobrescritas acidentais muito menos prováveis já de início.
Posso praticar isso online?
Sim. Abra o terminal playground para executar comandos git push em um shell real no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também aborda o trabalho com remotos passo a passo.
Coddy programming languages illustration

Aprenda Git com a Coddy

COMEÇAR