Skip to content

Instantly share code, notes, and snippets.

@davidalves1
Last active July 1, 2024 14:48
Show Gist options
  • Save davidalves1/f437586fa63665024f18f82dc97a83a1 to your computer and use it in GitHub Desktop.
Save davidalves1/f437586fa63665024f18f82dc97a83a1 to your computer and use it in GitHub Desktop.
Desfazendo um git push

Desfazendo um git push

Não é possível desfazer um push diretamente, como é feito com o commit utilizando o comando $ git reset --soft|mixed|hard hash-do-penultimo-commit

Para desfazer um push são necessários 3 passos:

  1. Utilizar o comando $ git reset --mixed HEAD~1 e em seguida utilizar o comando $ git stash (se preferir pode usar a opção -m "revertendo o push blablabla" para salvar o stash com um contexto do que foi feito
  2. Utilizar o comando $ git revert HEAD~0
  3. Utilizar o comando $ git stash apply
  4. Utilizar o comando $ git push origin sua-branch -f

Explicação

No passo 1, estamos recuperando os arquivos enviados com o git reset e criando um 'ponto de restauração' com o git stash para não perdermos as modificações enviadas. No git reset, ao invés do alias HEAD~1, pode ser utilizado o hash do penúltimo commit que o resultado é o mesmo.
No passo 2, criamos um novo commit revertendo o commit anterior, apagando as modificações realizadas. Aqui o alias HEAD~0 pode ser substituído pelo hash do último commit.
No passo 3, utilizamos o 'ponto de restauração' criado no passo 1 para recuperar as modificações realizadas antes do push.
Para finalizar, no passo 4 substituímos o push com o código correto a ser enviado para o repositório.

Observação

Para verificar os logs do commit podemos utilizar o comando $ git log --stat que mostra o hash, a descrição e os arquivos modificados nos commits.

Pronto! :)

@davidalves1
Copy link
Author

Valeu demais pelo feedback pessoal. Já atualizei com as sugestões nos comentários. Aproveitei pra fazer umas alterações que imagino que possa facilitar o processo.

@gcrozatti
Copy link

Excelente!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment