Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!

Publicado por Fábio Berbert de Paula em 20/05/2025

[ Hits: 108 ]

Blog: https://fabio.automatizando.dev

 


Fez porcaria no teu repositório Git? Aprenda a restaurar uma versão anterior do seu código!



Um belo dia, você está lá com seu projeto funcionando perfeitamente e resolve refatorar uma bordoada de códigos. Cada enxadada no código é um commit diferente (não faça isso! é, eu faço de vez em quando). O código começa a dar problema, você gambiarra outro módulo pra resolver, emaranha com outro módulo, faz cacadas em cadeia e já não faz mais ideia do que foi mexido, a única certeza é que um código que estava funcionando não está mais... e agora?

Bom, o Git é seu amigo! Nesta dica vou passar comandos simples que permitirão que você escolha qual versão anterior do seu código deseja restaurar.

A primeira coisa a se fazer é acessar o diretório raiz do seu projeto:

cd ~/projetos/umbrella

Agora digite o comando:

git log --pretty=format:"%h %cd %s" --date=format-local:"%Y-%m-%d %H:%M:%S"

Ele irá listar todos os commits realizados no repositório, com o hash do commit, a data e a mensagem do commit. O resultado será algo parecido com isso:

c05a9b6 2025-05-19 16:32:08 rabugento.js
e7611dc 2025-05-19 15:52:36 rabugento.js
3125db9 2025-05-19 15:40:12 deleteThread
4093ee3 2025-05-19 15:22:54 rabugento.js utils.js
8c8512c 2025-05-19 04:55:20 rabugento.js bug fix
3871774 2025-05-19 04:30:29 rabugento.js bug fix
590a2f6 2025-05-19 04:24:21 rabugento.js bug fix
19afc30 2025-05-19 04:20:11 rabugento.js
f51fc75 2025-05-19 04:17:15 rabugento.js
098de99 2025-05-19 04:15:24 rabugento.js
b54fa87 2025-05-19 03:59:01 rabugento.js
c6aa117 2025-05-19 03:54:13 rabugento.js
9cf38f0 2025-05-19 03:41:22 rabugento.js
4d23df5 2025-05-19 03:38:38 rabugento.js
793f30a 2025-05-19 03:37:38 rabugento.js
75bc804 2025-05-19 03:32:40 rabugento.js
cd396ab 2025-05-19 03:15:22 rabugento.js
07bf224 2025-05-19 02:59:53 rabugento.js
27c4bd3 2025-05-19 02:52:07 rabugento.js
19976d1 2025-05-19 02:34:05 rabugento.js

Pois é, também não usei mensagens de commit muito descritivas, mais uma boa prática que você deve seguir, ao contrário de quem escreve essa dica.

Agora, escolha o commit que deseja restaurar. Por exemplo, lembro que o último commit que fiz na parte da manhã estava funcionando, então vou restaurar o commit 8c8512c, de 04h55. Para isso, basta digitar o seguinte comando:

git reset --hard 8c8512c

Isso irá restaurar o código para a versão do commit 8c8512c. Se você não quiser perder os commits que fez depois, pode usar o comando:

git reset --soft 8c8512c

Isso irá restaurar o código para a versão do commit 8c8512c, mas manterá os commits que você fez depois dele na área de staging. Assim, você pode fazer um novo commit com as alterações que fez depois do commit 8c8512c.

Em seguida, digite o comando abaixo para limpar os arquivos não rastreados:

git clean -fd

Se você estiver usando um reposítório remoto, como o GitHub, e quiser restaurar o commit no repositório remoto também, basta usar o comando:

git push --force

Use somente se tiver certeza do que está fazendo, pois isso irá sobrescrever o repositório remoto com a versão do commit que você restaurou. Se você não tiver certeza, é melhor criar um novo branch e fazer o push para ele.

Por hoje é só, espero que essa dica salve o dia de alguém!

Outras dicas deste autor

Como capturar prints de vídeos usando mplayer

Converter imagens para fundo transparente via linha de comando

O comando mkpasswd

Desabilitar o sininho (bell) no terminal

Extraindo seu endereço IP com shell script (egrep + awk)

Leitura recomendada

Hardware Project Simulator 0.2 com interface gráfica e correções

Programando em Python no VIM com recurso de auto-completar (python-jedi)

Python3 demorando a compilar numpy e/ou pandas [Resolvido]

RTV - Acessando o Reddit via terminal

Ordenando dicionários em Python

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts