Git: como reverter a junção de um commit?
com o SVN é fácil reverter-mesclar um commit, mas como fazer isso com o Git?
5 answers
Para criar um novo commit que 'desfaz' as alterações de um commit passado, use:
$ git revert <commit>
Também é possível realmente remover um commit de um ponto arbitrário no passado, reiniciando e depois reiniciando, mas você realmente não quer fazer isso se você já empurrou seus commits para outro repositório (ou alguém puxou de você).
Para reverter uma persistência de junção, você precisa usar: git revert-M. Então, por exemplo, para reverter a persistência mais recente da junção usando o pai com o número 1 que você usaria:git revert -m 1 HEAD
Para reverter uma persistência de junção antes da última persistência, você faria:git revert -m 1 HEAD^
Use git show <merge commit SHA1>
para ver os pais, a numeração é a ordem que eles aparecem e.g. Merge: e4c54b3 4725ad2
Documentação da junção do Git: http://schacon.github.com/git/git-merge.html
Git merge discussion (confuso mas muito detalhado): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
svn merge -rn:n-1
Para recuar de um commit anterior, nesse caso, você provavelmente está procurando
git revert
Se não quiser persistir, ou se quiser persistir mais tarde (a mensagem de persistência será preparada à mesma para si, a qual poderá também editar):
git revert -n <commit>
git reset --hard HEAD^
Use o comando acima para reverter as alterações da junção.