J’ai apporté peu de modifications à mon projet (je travaillais sur une twig distante et non sur le maître), je les ai validées et j’ai créé une requête pull sur BitBucket
et fusionné la twig à maîsortingser. J’avais oublié de repousser mes modifications après le commit. Maintenant, après avoir essayé de basculer la twig actuelle vers ma twig distante et de revenir à la validation avant la fusion, j’ai réussi à récupérer toutes mes modifications et à les sauvegarder ailleurs dans mon système. Ce que je veux faire maintenant, c’est défaire la mauvaise fusion que j’ai faite. Chaque fois que je clique sur la fusion et que je sélectionne "Reverse commit"
, je reçois le message d’erreur suivant:
"error: Commit is a merge but no -m option was given. fatal: revert failed"
Les twigs ressemblent à ceci maintenant:
Je veux essentiellement supprimer la fusion et l’amener à un état tel qu’elle ne dit plus master(4 behind)
.
Je suis nouveau dans le contrôle des sources et j’apprécierais que quelqu’un puisse m’aider avec ceci.
Cette méthode est basée sur la suppression de l’historique:
git push origin name_of_branch --force
dans le terminal (vous devrez peut-être entrer votre nom d’utilisateur et votre mot de passe git repo pour qu’il accepte la commande) Si un message apparaît plus tard dans la ligne pour vous demander si vous souhaitez abandonner le rebase ou continuer. Cliquez sur “continuer”. Si vous abandonnez, la fusion apparaîtra à nouveau sur votre copie locale.
C’est probablement le moyen le plus simple de le faire, mais comme il est basé sur la suppression de l’historique, si d’autres travaillent sur le projet, assurez-vous de leur faire savoir ce que vous faites pour ne pas casser le repository git.
Il est très regrettable que SourceTree ne facilite pas la restauration des validations de fusion (du moins dans Windows SourceTree 1.5.2.0). Toutefois, vous pouvez facilement rétablir la fusion à partir de la ligne de commande, mais souhaitez-vous annuler la fusion en ajoutant un autre commit qui est l’inverse des résultats de la validation de fusion ou souhaitez-vous simplement supprimer le commit de fusion de l’historique? tout à fait?
Si vous ne partagez pas votre twig principale avec d’autres personnes, la chose la plus simple à faire serait de simplement effectuer une réinitialisation matérielle pour supprimer le commit de fusion de l’historique. Cependant, si d’autres personnes ont déjà une copie de cette validation de fusion, vous créerez un travail supplémentaire en essayant de resynchroniser leurs copies de master
avec la version réécrite.
Vous devez donc déterminer quelle option vous souhaitez utiliser. Je vais donner les étapes pour les deux, en utilisant la ligne de commande:
git checkout master git push origin master --force
Cela écrasera la validation de fusion sur origin/master
avec l’état actuel de votre twig master
locale, supprimant ainsi la validation de fusion.
git checkout master git merge origin/master git revert -m 1 HEAD
Cela amènera votre twig master
locale en synchronisation avec l’ origin/master
, puis vous pourrez append une validation en indiquant à git revert
que le 1 er parent est celui qui doit être considéré comme le parent principal, et cela créera le validation inversée relative aux modifications apscopes par l’autre validation par le parent.
Si vous décidez ultérieurement d’intégrer à nouveau les modifications de l’autre parent, vous devrez alors append une autre validation de réversion qui annule la validation de retour que vous venez d’effectuer (technique appelée “annulation du retour”).
Voir également: