Recuperando um commit no meio da linha de morte no Git

Situação do dia-a-dia:

Cenário:

Uma timeline com os últimos 10 commits apenas locais contendo uns testes malucos seu. Destes 10, você precisa tirar um para um push no servidor remoto, porém ele está lá no meio, entre o quinto e sétimo commit. E agora ?

Solução:

$ git reset + git diff + git apply

Primeiro, peguei o hash do commit que me interessa da lista. Com ele em mãos, fiz um reset para ele:

$ git reset d3fb9

Fiz um diff entre o commit HEAD (ele próprio) e o penúltimo commit da timeline gerando um .patch da diferença:

$ git diff -u 691ac > meu_commit_importante.patch

Após ter meu patch a salvo, fiz o reset apontando para o último commit que tenho sincronizado com meu servidor remoto:

$ git reset 12345

Após, eu utilizei o git apply –check para verificar se meu patch não ocasionaria problemas e por fim o apliquei:

$ git apply meu_commit_importante.patch

Como eu não preciso logar no histórico que fiz isso (eram commits locais, lembra ?) não utilizei o git am conforme o pessoal costuma utilizar. Após isto, git commit -a -m “Modificação XPTO” e done.

Como me é interessante manter o que estou fazendo vivo, obviamente o coloquei em um branch separado após isto.

 

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s