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.
Sintaxe
| Command | What it does |
|---|---|
git push --force | Sobrescreve o branch remoto, sem verificação de segurança |
git push -f | Forma abreviada de --force |
git push --force-with-lease | Força somente se ninguém mais fez push nesse meio-tempo |
git push --force-with-lease origin feature | Force push mais seguro para um branch nomeado |
--force vs --force-with-lease
| Behavior | --force | --force-with-lease |
|---|---|---|
| Sobrescreve o remoto | Sempre | Somente se inalterado desde seu último fetch |
| Pode apagar commits de outros | Sim | Recusa, a menos que um fetch tenha renovado o lease |
| Recomendado para times | Não | Sim |
Perguntas frequentes sobre git force push
Quando preciso forçar o push?
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?
--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?
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.