web-dev-qa-db-fra.com

Annuler une fusion git (n'a pas encore été poussé)

Je viens de valider quelques modifications dans l'une de mes branches de fonctionnalités ("feedback_tab") puis, j'ai vérifié "master" et les ai fusionnées là-dedans. Je voulais en fait les fusionner dans ma branche "développement".

Maintenant, master est en avance sur 'Origin/master' (sa télécommande) par 17 commits - je n'ai pas poussé la fusion (et je ne veux pas, évidemment). Comment puis-je rétablir le maître dans le même état qu'avant la fusion accidentelle? Je suis confus entre git revert et git reset avec ce genre de choses.

J'ai regardé dans mon journal git et il n'y a pas d'entrée pour fusionner feedback_tab dans master. J'aurais pensé que ce serait la première entrée?

Peu confus:/toute aide bienvenue! max

40
Max Williams

git reset --hard HEAD~17 vous ramène 17 commits devant le chef de master. git rebase -i HEAD~17 supprime probablement également les commits supplémentaires.

35
Tamás

Pour annuler une fusion qui n'a PAS été poussée:

git reset --merge ORIG_HEAD

Si pendant la fusion vous obtenez un conflit, la meilleure façon d'annuler la fusion est:

git merge --abort
64
Hemerson Varela

Tiré de git reset

Undo a merge or pull

    $ git pull                         <1>
    Auto-merging nitfol
    CONFLICT (content): Merge conflict in nitfol
    Automatic merge failed; fix conflicts and then commit the result.
    $ git reset --hard                 <2>
    $ git pull . topic/branch          <3>
    Updating from 41223... to 13134...
    Fast-forward
    $ git reset --hard ORIG_HEAD       <4>
12
Amir Raminfar

Celui-ci fonctionnera sûrement!

git reset --hard HEAD~1 
git init

Le premier annulera les modifications que vous avez apportées récemment (la fusion), le second lancera le dépôt au plus tard (par conséquent, avancera rapidement au plus tard sur Origin)

J'ai essayé

git reset --merge

mais ça n'a pas fait l'affaire.

4
Alon Kogan