DEV Community

Paulo Gonçalves
Paulo Gonçalves

Posted on

19 1 1

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

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay