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?

 99
Author: Mot, 2009-11-27

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ê).

 99
Author: Ben James, 2009-11-27 16:09:36

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

 95
Author: Marcus Ericsson, 2015-11-06 12:52:10
Se Bem te entendo, estás a falar em fazer um ...
svn merge -rn:n-1

Para recuar de um commit anterior, nesse caso, você provavelmente está procurando

git revert
 4
Author: Rudedog, 2014-07-18 02:10:23

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>
 -1
Author: rkrisztian, 2017-01-29 11:37:34
git reset --hard HEAD^ 

Use o comando acima para reverter as alterações da junção.

 -2
Author: kapil chakravarthy, 2015-01-07 14:00:38