En mi caso, fusioné mi rama (digamos: my-branch) con otra rama de función (feature-branch) pero no master. Entonces, el historial de mi sucursal fue así:
my-branch (before merge)
---master----m1----m2----m3---m4
Después de fusionarlo con otro feature-branch
que tenía confirmaciones f1, f2
sobre el maestro, se volvió así:
my-branch (after merge)
---master----m1----m2----f1----f2----m3---m4----mergecommit
Esto podría haber sucedido porque mientras trabajaba en mi rama hice una fusión desde la maestra después de 2 confirmaciones, o una de las 2 ramas podría no haber estado actualizada con la maestra. Entonces, en este caso git revert -m 1
no estaba funcionando, ya que dejaba esos f1
y se f2
compromete en el medio.
La solución fue simple, que funcionará en el caso de escenarios normales, donde no tenemos confirmaciones intermedias:
git rebase -i HEAD~6
En lugar de 6, utilice el número apropiado según la cantidad de confirmaciones pasadas que desee cambiar. Ahora que el editor de Vim está abierto, simplemente marque las confirmaciones no deseadas como drop
iguales y salga usando el :wq
registro de verificación:
git log --oneline
empujar la fuerza
git push -f
Ahora la rama remota debería estar en estado anterior.