Digamos que el otro tipo creó una barra encima de foo, pero mientras tanto creaste baz y luego te uniste, dando un historial de
$ git lola
* 2582152 (HEAD, master) Fusionar rama 'otherguy'
| \
El | * Barra c7256de (otro tipo)
* | b7e7176 baz
| /
* 9968f79 foo
Nota: git lola es un alias no estándar pero útil.
Sin dados con git revert
:
$ git revert HEAD
fatal: Commit 2582152 ... es una fusión, pero no se dio la opción -m.
Charles Bailey dio una excelente respuesta como siempre. Utilizando git revert
como en
$ git revert --no-edit -m 1 HEAD
[master e900aad] Revertir "Fusionar rama 'otherguy'"
0 archivos modificados, 0 inserciones (+), 0 eliminaciones (-)
modo de eliminación 100644 bar
elimina bar
y produce efectivamente un historial de
$ git lola
* e900aad (HEAD, master) Revertir "Fusionar rama 'otherguy'"
* 2582152 Fusionar rama 'otherguy'
| \
El | * Barra c7256de (otro tipo)
* | b7e7176 baz
| /
* 9968f79 foo
Pero sospecho que quieres tirar el commit de fusión:
$ git reset --HAD HEAD ^
HEAD ahora está en b7e7176 baz
$ git lola
* b7e7176 (HEAD, master) baz
El | * Barra c7256de (otro tipo)
| /
* 9968f79 foo
Como se documenta en el git rev-parse
manual
<rev>^
, por ejemplo, HEAD ^,v1.5.1^0
un sufijo ^
para un parámetro de revisión significa el primer padre de ese objeto de confirmación. ^<n>
medios el n padre-ésimo ( es decir, <rev>^
es equivalente a <rev>^1
). Como regla especial, <rev>^0
significa el compromiso en sí y se usa cuando <rev>
es el nombre del objeto de un objeto de etiqueta que se refiere a un objeto de compromiso.
así que antes de invocar git reset
, HEAD^
(o HEAD^1
) era b7e7176 y HEAD^2
era c7256de, es decir , respectivamente, el primer y el segundo padre de la confirmación de fusión.
Tenga cuidado git reset --hard
porque puede destruir el trabajo.