Comment annuler un git merge de squash?

Je viens de faire un

git merge --squash feature-branch

dans mon develop branche.

Le problème est que la commande ci-dessus mis à jour la tête sans la création d'un nouveau commit. Mon intention était de créer un seul s'engagent à appliquer à la tête de develop.

Donc, en bref, le journal de la develop branche avant et après la fusion sont exactement les mêmes.

Est-il un moyen de revenir develop à ce qu'il était avant la git merge?

Merci.

Solution

Basé sur le commentaire de Dan D. et accepté la réponse ci-dessous, j'ai pu résoudre mon problème. Voir ci-dessous ce que j'ai fait dans le cas où vous êtes dans le même bateau:

1 - j'ai couru git reflog et la liste de toutes les validations et les caisses que j'ai fait avec mon develop branche.

2 - au Lieu de faire un git reset HEAD@{1} comme suggéré, j'ai trouvé le numéro quand j'ai fait la dernière s'engagent à élaborer que je voulais garder. Dans mon cas, c'était HEAD@{188}. Donc j'ai tapé git reset HEAD@{188}.

3 - j'ai couru un git log et qu'il avait une propre journal ne montrant que les commits que j'avais avant j'ai fait le mauvais fusion.

4 - j'ai couru git add -A . à tous les stades, de nouveaux fichiers créés au cours de mon développement.

5 - j'ai couru git commit -m "install feature-x"

6 - suite maintenant, j'ai de la branche develop avec les fichiers corrects et que le journal est propre - montrant un commit pour tous les changements que j'ai fait pendant le développement de feature-x.

J'ai encore besoin de savoir pourquoi mon original git merge --squash feature-branch n'a pas fonctionné comme prévu.

Solution 2

Marque Longair réponse est une solution définitive à mon problème. Je viens de tester et cela fonctionne. Voir ci-dessous le processus, je me sers maintenant de squash tous les internes s'engage dans un feature-branch et d'inclure seulement un commit à la develop branche:

git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"

La séquence ci-dessus fonctionne comme un charme.

Utilisation git reflog.

OriginalL'auteur jdias | 2011-09-17