Pages

Google Ads

Saturday, September 29, 2012

Fiz um commit no Git e fiz besteira, por isso quero voltar para a versão anterior, como eu faço?


Pessoal nesta sexta-feira passei a manhã inteira em um Hotel em Brasília desenvolvendo um produto para um cliente muito importante, e durante o desenvolvimento fiz alguns commits para o github privado do projeto.

Até aqui tudo parece lindo e normal. Porém às 12:20hs eu fiz uma besteira e não sei porquê commitei errado; resumindo, perdi tudo o que fiquei a manhã inteira fazendo, e que tinha que apresentar no período da tarde para o cliente, e precisava sair do Hotel às 13:00hs. E aí, o que fazer em uma situação real como essa? 

Nesse momento não adiantava ligar para ninguém, enviar e-mail, pedir suporte, etc, eu tinha 10 minutos para resolver.

Isso pode ser simples para alguns especialistas em GIT, mas para mim, até aquele momento eu apenas sabia que era simples, mas não sabia resolver.

"Bom...", pensei, "estou usando o GIT e com certeza ele deve resolver esse problema para mim, mas  como fazer isso? Tenho de 5 a 10 minutos para resolver".

Procurei na internet pela frase: "como recuperar algo apagado no git".

Voltaram alguns resultados, e, em quarto lugar, voltou o Blog do Akita com o texto AkitaOnRails.com - Dicas de Git

Depois de ler alguns blogs que não me ajudaram, eu li o post do blog do Akita com o texto:

"Undelete

Depois de tanto manipular commits, digamos que você tenha feito alguma besteira. Vamos simular uma “besteira”, digamos que você tenha apagado um commit que não queria, por exemplo:

 $ git log

commit 15bb972393f7794892dbf5d6a3097c533a68fbea
Author: AkitaOnRails <fabioakita@gmail.com>
Date:   Sun Jul 5 15:13:03 2009 -0300

    Revert "adicionando scaffold de Post"
    
    This reverts commit 89b53e7d0bfc4fdb4b5c389f5481dab5ddb2b83d.
...

Para apagar “por engano” este commit mais recente, digamos que você “acidentalmente” tenha feito:
git reset --hard HEAD~1"

Depois de ler esse texto consegui resolver. O Akita me salvou! Quando eu encontrar com ele novamente, em algum evento, vou pagar um almoço para ele! Além, é claro, de divulgar no meu blog como ele me salvou e compartilhar minha experiência real.

O Texto original pode ser encontrando em http://www.akitaonrails.com/2009/07/05/dicas-de-git#.UGW-6RgdB6o

Na prática foi assim:

caiomsouza:nomedoprojeto caiomsouza$ git reset --hard HEAD~1
HEAD is now at 7b84179 Merge branch 'master' of https://github.com/caiomsouza/nomedoprojeto
caiomsouza:nomedoprojeto caiomsouza$ ls
README.md    cubos          dw          etl-examples     etl_source
caiomsouza:nomedoprojeto caiomsouza$ cd etl_source/

Bom pessoal, mais uma dica para o meu blog, baseada em uma experiência real que aconteceu comigo ontem.

No comments: