Como recuperar um git rebase mal feito
Como acabei de “twittar”, fiz cagada bagunça em um branch ao usar o git rebase. Antes de me desesperar, resolvi fazer a velha busca no “Pai” (termo usado para identificar o Google pelo famosíssimo Guanabara em um dos guanacasts sobre SEO (parte I e parte II), onde encontrei um post de Greg DeVore, explicando como recuperar uma cagada bagunça dessa. E com meus MAD SKIILS, ainda usei o git cherry-pick para recuperar o commit perdido. Lembrando que deve haver forma mais higiênica de recuperar um commit “perdido”. Bom, chega de bla-bla-bla e vamos ao que interessa. (os hashes de commit foram abreviados para facilitar a leitura)
$ echo NÃO SE DESESPERAR
NÃO SE DESESPERAR
$ cat .git/logs/refs/meu-branch
937 a0e tino ...commit: meu commit 2
a0e 1eb tino ...commit(amend): meu commit 2
1eb 8db tino ...rebase (finish): refs/heads/meu-branch onto 8db
$ echo NOTE QUE NO COMMIT "1eb" FOI O ÚLTIMO ANTES DO rebase
NOTE QUE NO COMMIT "1eb" FOI O ÚLTIMO ANTES DO rebase
$ git cherry-pick -n 1eb
Finished one cherry-pick.
$ git status
...
modified app/controller/application_controller.rb
...
$ git commit -m 'meu commit 2'
[meu-branch 3f5f542] meu commit 2
15 files changed, 157 insertions(+), 21 deletions(-)
Pronto, seu trabalho foi recuperado!