Com o SVN, é fácil mesclar reversamente um commit, mas como fazer isso com o Git?
Com o SVN, é fácil mesclar reversamente um commit, mas como fazer isso com o Git?
Respostas:
Para criar um novo commit que 'desfaz' as alterações de um commit passado, use:
$ git revert <commit>
Também é possível remover uma confirmação de um ponto arbitrário no passado, refazendo e redefinindo, mas você realmente não deseja fazer isso se já tiver enviado as confirmações para outro repositório (ou alguém o tiver retirado) .
-m <parent number>
opção git revert
para especificar qual alteração reverter. Se você deseja desfazer uma mesclagem de histórico não publicado, use git reset --hard HEAD^1
.
-m
significa que uma mesclagem futura da ramificação não mesclada não incluirá as alterações anteriores a essa mesclagem! Consulte schacon.github.com/git/howto/revert-a-faulty-merge.txt para obter maneiras adequadas de mesclar novamente uma ramificação não mesclada.
Para reverter um merge commit, você precisa usar: git revert -m <parent number>
. Portanto, por exemplo, para reverter a confirmação mais recente de mesclagem usando o pai com o número 1, você usaria:
git revert -m 1 HEAD
Para reverter um commit de mesclagem antes do último commit, você faria:
git revert -m 1 HEAD^
Usar git show <merge commit SHA1>
para ver os pais, a numeração é a ordem em que aparecem, por exemploMerge: e4c54b3 4725ad2
documentação do git merge: http://schacon.github.com/git/git-merge.html
discussão sobre git merge (confusa, mas muito detalhada): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
para ver os pais, a numeração é a ordem em que eles aparecem, por exemploMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
esse comando funcionou para mim para reverter um commit de mesclagem com vários commits de mesclagem antes do cabeçalho e com muitos commits embaixo.
git reset --hard HEAD^
Use o comando acima para reverter as alterações de mesclagem.
Se você não deseja confirmar, ou deseja confirmar posteriormente (a mensagem de confirmação ainda estará preparada para você, que você também pode editar):
git revert -n <commit>