Linux, Open-source, Programação e Produtividade

Como desfazer commits na branch errada no Git

convidados em 12/08/2009

O post de hoje é do nosso amigo Lucas Cavalcanti, desenvolvedor da Caelum.

Usando git, sempre é bom trabalhar em branches, nunca commitar diretamente na branch master.

Acontece que às vezes você simplesmente esquece de criar uma branch antes de começar a trabalhar
e commita várias coisas no master. O problema disso é que se você der um git pull origin master
e acontecer um conflito de merge, você vai ter que resolver todos os conflitos de uma vez só,
e ganhar um commit “Merge branch blablablah” que some com algumas informações de commit…

O que fazer então?

Um jeito legal de prevenir isso é digitando os comandos:

(master) $ git branch temp
# cria uma branch pra guardar o estado atual

(master) $ git reset --hard HEAD@{1}
# volta o estado do branch master para a última
# ação perigosa que você fez, geralmente
# o último push que vc fez no servidor

(master) $ git pull origin master
# agora sim fazendo um pull seguro

(master) $ git checkout temp
(temp) $ git rebase master
# e corrige os eventuais conflitos do jeito certo

(temp) $ git checkout master
(master) $ git merge temp
(master) $ git push origin master
(master) $ git branch -d temp

Assim você corrige a cagada de trabalhar no master sem querer e continua a trabalhar com o git
do jeito certo.

Quer aprender mais sobre esse assunto? Conheça o Git Game