Eu não acho que é isso que significa a pergunta. Uma mesclagem reversa no SVN também reverte as alterações da confirmação para as alterações locais, para que você possa editá-las e confirmar novamente.
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) .
Você provavelmente precisaria fornecer a -m <parent number>opção git revertpara especificar qual alteração reverter. Se você deseja desfazer uma mesclagem de histórico não publicado, use git reset --hard HEAD^1.
Jakub Narębski 27/11/2009
3
Jakub: isso é verdade se você estiver revertendo um commit de mesclagem, mas na terminologia do Subversion, "mesclagem reversa" é na verdade simplesmente o nome para reverter qualquer tipo de commit.
Ben James
4
Observe que usar -msignifica 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.
Martijn Pieters
125
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
Como você pode obter o 'número' associado aos pais? As ramificações possuem um 'id' numérico intrínseco?
Daniyalzade 5/09
7
Use git show <merge commit SHA1>para ver os pais, a numeração é a ordem em que eles aparecem, por exemploMerge: e4c54b3 4725ad2
supermethod
8
exemplo: git revert -m 1 SHA1esse 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.
c.apolzon
3
Quais são os pais? E4c54b3 ou 4725ad2?
Dolphin
1
Isso ainda não fornece informações suficientes sobre como os resultados do git show estão relacionados aos números dos pais. A ordem em que aparecem é baseada em 1? Baseado em 0? Neste exemplo especificamente, qual é o SHA1 do pai 1? e4c54b3 ou 4725ad2?
cowlinator
4
Se eu entendi direito, você está falando sobre fazer uma
svn merge -rn:n-1
voltar de um commit anterior, nesse caso, você provavelmente está procurando
Isso descarta o commit de mesclagem, que não faz o que o pôster original está pedindo. O OP está tentando fazer um patch reverso para desfazer as alterações anteriores, não para apagar completamente o histórico das alterações anteriores.
-1
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):
Respostas:
Para criar um novo commit que 'desfaz' as alterações de um commit passado, use:
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) .
fonte
-m <parent number>
opçãogit revert
para especificar qual alteração reverter. Se você deseja desfazer uma mesclagem de histórico não publicado, usegit 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:Para reverter um commit de mesclagem antes do último commit, você faria:
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
fonte
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.Se eu entendi direito, você está falando sobre fazer uma
voltar de um commit anterior, nesse caso, você provavelmente está procurando
fonte
Use o comando acima para reverter as alterações de mesclagem.
fonte
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):
fonte