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! :)

@vanessa-carvalho-dev
Copy link

vanessa-carvalho-dev commented Mar 27, 2021

Você precisa por argumento -f para forçar.

faltou um passo no meio: git push -f

Essa dica do @atimermann me ajudou, bigadão SZ

@cassiompf
Copy link

Vlw, muito obrigado! Esse tutorial salvou meu dia hehe👏

@rafaeljneves
Copy link

Salvou meu dia também ! Thanks !

@raflisboa
Copy link

Funcionou pra mim, e não no Github, mas sim no Gitlab. Obrigado!

@LucianoBritis
Copy link

Esse post me ajudou, eu estava procurando como reverter um push, Obrigado.
Ah e só vai com 'force' mesmo no push.

@gabmotamelo
Copy link

Obrigado, essas instruções me ajudou demais!!

@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