Digamos que o outro cara tenha criado uma barra em cima de foo, mas você criou o baz nesse meio tempo e depois se fundiu, fornecendo um histórico de
$ git lola
* 2582152 (HEAD, mestre) Mesclar ramificação 'otherguy'
| \
| * barra c7256de (otherguy)
* b7e7176 baz
| /
* 9968f79 foo
Nota: git lola é um alias não padrão, mas útil.
Nenhum dado com git revert:
$ git revert HEAD
fatal: confirmar 2582152 ... é uma mesclagem, mas nenhuma opção -m foi fornecida.
Charles Bailey deu uma excelente resposta, como sempre. Usando git revertcomo em
$ git revert --no-edit -m 1 CABEÇA
[master e900aad] Reverter "Mesclar ramo 'otherguy'"
0 arquivos alterados, 0 inserções (+), 0 exclusões (-)
modo de exclusão 100644 bar
efetivamente exclui bare produz um histórico de
$ git lola
* e900aad (HEAD, mestre) Reverter "Merge branch 'otherguy'"
* 2582152 Mesclar ramificação 'otherguy'
| \
| * barra c7256de (otherguy)
* b7e7176 baz
| /
* 9968f79 foo
Mas suspeito que você deseja jogar fora o commit de mesclagem:
$ git reset --hard HEAD ^
HEAD está agora no b7e7176 baz
$ git lola
* b7e7176 (HEAD, mestre) baz
| * barra c7256de (otherguy)
| /
* 9968f79 foo
Conforme documentado no git rev-parsemanual
<rev>^, por exemplo, HEAD ^,v1.5.1^0
Um sufixo ^para um parâmetro de revisão significa o primeiro pai desse objeto de confirmação. ^<n>significa o n- ésimo pai ( ie <rev>^ é equivalente a <rev>^1). Como regra especial, <rev>^0significa a confirmação em si e é usado quando <rev>é o nome do objeto de uma tag que se refere a um objeto de confirmação.
portanto, antes de chamar git reset, HEAD^(ou HEAD^1) era b7e7176 e HEAD^2c7256de, ou seja , respectivamente o primeiro e o segundo pais da consolidação de mesclagem.
Tenha cuidado, git reset --hardpois pode destruir o trabalho.