Git: Tiró de la twig equivocada, luego empujó la fusión. ¿Cómo deshacer?

Hace poco cometí un error con mi estrategia de combinación de git, y no noté los errores de resultado hasta que ya había continuado trabajando en el proyecto e hice más commits. En aras de la brevedad, digamos que tengo dos twigs, hotfix y new_feature . Hice algo como lo siguiente:

 git checkout new_feature git commit -m "Commit to the feature branch" git checkout hotfix git pull origin new_feature # Uh oh, I pulled the wrong branch! git commit -m "Commit to the hotfix" git push origin hotfix # Uh Oh, pushed the bad merge! 

Después de los events anteriores, otros desarrolladores también realizaron commits a la twig Hotfix. Ahora, tenemos una revisión que queremos expulsar, pero no podemos porque contiene funciones que no están completas.

He visto muchas preguntas similares sobre esta situación, pero ninguna que coincida al 100% (la mayoría de ellas implica deshacer el compromiso directamente después del mal tirón, sin empujar primero. He ido un paso más allá, y realmente he corrido las cosas.

¿Alguna guía paso a paso sobre cómo puedo remediar esto?

¡Gracias!

Editar: muchas otras respuestas mencionan git reflog , así que aquí hay una copy modificada de la mía. Cambié los hash y los nombres de las twigs para que coincidan con mi ejemplo anterior.

 aaaaaaa HEAD@{0}: checkout: moving from new_feature to hotfix bbbbbbb HEAD@{1}: checkout: moving from hotfix to new_feature aaaaaaa HEAD@{2}: commit: Added analytics tracking ccccccc HEAD@{3}: commit (merge): Fixed a merge issue in compiled css # BAD MERGE? ddddddd HEAD@{4}: checkout: moving from new_feature to hotfix eeeeeee HEAD@{5}: commit: Finished updating the events for the header ddddddd HEAD@{6}: checkout: moving from hotfix to new_feature ddddddd HEAD@{7}: checkout: moving from new_feature to hotfix 

En el reflog anterior, HEAD@{3} parece ser la combinación incorrecta. Estaba en la twig de hotfix y saqué la twig new_feature , lo que dio conflictos de combinación. Los arreglé y empujé. ¿Qué haría para arreglar esto?

Encuentre el hash de confirmación: git log --pretty=format:"%h %s" | grep "Commit to the hotfix" git log --pretty=format:"%h %s" | grep "Commit to the hotfix"

Revertir el "Uh oh" commit: git revert 15d2e1f -m 2