DEV Community 👩‍💻👨‍💻

Paulo Gonçalves
Paulo Gonçalves

Posted on

Pare de usar git push --force

Esse conteúdo é abordado no meu treinamento de conceitos de git

Reescrevendo a história da branch com segurança

Ao reescrever a história da nossa branch, com git rebase, por exemplo, costumamos utilizar o git push --force. Essa opção força o envio das alterações e substitui todas as alterações remotas pela versão local.

O grande perigo é que, se outra pessoa tiver enviado uma alteração no repositório remoto e que não estava na sua versão local, esse trabalho será totalmente perdido.

git push --force-with-lease

Para evitar essa situação (e muita dor de cabeça), adote o uso de git push --force-with-lease em detrimento de git push --force.

Esta opção permite forçar o push sem o risco de sobrescrever acidentalmente o trabalho de outra pessoa.

Ele atualizará a branch remota APENAS se o histórico dela for igual ao histórico que você alterou localmente, caso contrário o push será rejeitado. Nesse caso, você terá que levar a alteração remota da outra pessoa para a sua branch local antes de tentar fazer o git push --force-with-lease novamente.

Exemplo de push rejeitado com o alerta de stale info (informação velha):

O que acontece com push --force-with-lease

Pronto 😃 agora você pode garantir que não irá apagar acidentalmente alteração que alguém possa ter dado push enquanto você reescreveu o histórico!

Para aprofundar no tema recomendo a própria documentação do git sobre git-push.

Don't rewrite public history unless you're really sure about what you're doing. And if you do, be safe and force-with-lease.


Esse post está sendo versionado e hospedado no Github

Top comments (0)

Stop sifting through your feed.

Find the content you want to see.

Change your feed algorithm by adjusting your experience level and give weights to the tags you follow.