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 revert
como 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 bar
e 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-parse
manual
<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>^0
significa 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^2
c7256de, ou seja , respectivamente o primeiro e o segundo pais da consolidação de mesclagem.
Tenha cuidado, git reset --hard
pois pode destruir o trabalho.