Je travaille donc sur un projet avec d'autres personnes, et plusieurs forks github sont en cours de travail. Quelqu'un vient de corriger un problème et j'ai fusionné avec son fork, mais j'ai réalisé que je pouvais trouver une meilleure solution. Je veux revenir sur le commit que je viens de faire. J'ai essayé de le faire avec git revert HEAD
mais cela m'a donné cette erreur:
fatal: Commit <SHA1> est une fusion mais aucune option -m n'a été donnée.
Qu'est-ce que ça veut dire? Quand j'ai fusionné et engagé, j'ai utilisé l'option -m pour dire "Fusionné avec <username>".
Qu'est-ce que je fais de mal ici?
la source
git cat-file -p [MERGE_COMMIT_ID]
affichera les branches parentes dans l'ordre. Le premier listé serait-m 1
, le second-m 2
.git revert [HASH] -m 2
me dit sur la branche 1.x-1.x rien à valider, le répertoire de travail est nettoyé mais mon commit n'est pas annulé.Disons que l'autre gars a créé un bar au-dessus de foo, mais que vous avez créé baz entre-temps et que vous avez fusionné, donnant un historique de
Remarque: git lola est un alias non standard mais utile.
Pas de dés avec
git revert
:Charles Bailey a donné une excellente réponse comme d'habitude. Utilisation
git revert
comme danssupprime efficacement
bar
et produit un historique deMais je soupçonne que vous voulez supprimer le commit de fusion:
Comme documenté dans le
git rev-parse
manueldonc avant d'invoquer
git reset
,HEAD^
(ouHEAD^1
) était b7e7176 etHEAD^2
c7256de, c'est -à- dire respectivement les premier et deuxième parents du commit de fusion.Soyez prudent
git reset --hard
car cela peut détruire le travail.la source
lola
à vos commandes git:git config --global alias.lola "log --graph --decorate --pretty=oneline --abbrev-commit --all"
J'ai eu ce problème, la solution était de regarder le graphe de commit (en utilisant gitk) et de voir que j'avais ce qui suit:
Je comprends maintenant que je veux faire
C'est parce
-m 1
que fusionnerait en fonction du parent commun où, en tant que-m 2
fusion en fonction de la branche y, c'est celle que je veux choisir.la source
git-revert
, c'est le sujet de cette question.-m
option, pas exclusivementgit merge
. C'est-à-dire que le raisonnement derrière l'utilisation de l'-m
option semble être similaire pour les retours et les choix de cerises. Si ce n'est pas vrai, veuillez nous en informer. Comme je n'ai trouvé aucune autre question traitant spécifiquement de son utilisation sélective, merci pour cette réponse, qui a probablement conduit Google à m'aider à trouver cette question et une discussion utile et pertinente!