Suppression/annulation d'une fusion sur Sourcetree
j'ai fait pas mal de changements dans mon projet (je travaillais sur une branche distante et pas sur le master), je les ai engagés et j'ai créé une demande de pull sur BitBucket
et j'ai fusionné la branche à master. J'avais oublié de pousser mes changements après la livraison. Maintenant, après avoir essayé de passer de la branche courante à ma branche distante et de revenir à la commit avant la fusion, j'ai réussi à récupérer tous mes changements et les sauvegarder ailleurs dans mon système. Ce que je veux faire maintenant est d'annuler la mauvaise fusion que je faire. Chaque fois que je clique sur la fusion et sélectionnez "Reverse commit"
, j'obtiens le message d'erreur suivant:
"error: Commit <commit_id> is a merge but no -m option was given.
fatal: revert failed"
les branches ressemblent à ceci maintenant:
je veux essentiellement supprimer la fusion et l'amener à un état tel qu'il ne dit plus master(4 behind)
.
je suis nouveau au contrôle des sources et j'apprécierais que quelqu'un puisse m'aider avec ça.
2 réponses
cette méthode est basée sur la suppression historique:
- découvrez la branche que vous faites l'erreur sur
- clic Droit sur la validation que vous souhaitez réinitialiser la branche
- , Cliquez sur "Réinitialiser actuelles de la direction générale à ce commit"
- sélectionnez le mode "dur" et cliquez sur " OK "
- Malheureusement, vous avez besoin de terminal pour faire ce peu. Tapez
git push origin name_of_branch --force
dans le terminal (vous pourriez avoir besoin d'entrer votre git pensions de nom d'utilisateur et le mot de passe pour qu'il accepte la commande)
si un message apparaît plus tard dans la ligne demandant si vous souhaitez annuler le rebase ou continuer. Cliquez sur "continuer". Si vous abandonnez, la fusion apparaîtra à nouveau sur votre copie locale.
c'est probablement la façon la plus facile de le faire, mais comme il est basé sur la suppression de l'histoire, si d'autres travaillent sur le projet, assurez-vous de leur faire tous savoir ce que vous faites afin que vous ne cassez pas de quelqu'un dépôt git.
il est très regrettable que SourceTree ne rend pas facile pour vous de revenir merge commits (au moins dans Windows SourceTree 1.5.2.0). Toutefois, le retour de la fusion peut facilement être accompli à partir de la ligne de commande, mais que voulez-vous revenir à la fusion en ajoutant une autre commit qui est le revers de la résultats de la propagation de la fusion, ou voulez-vous simplement supprimer la propagation de la de l'histoire?
Si vous ne partagez pas votre branche master
avec d'autres personnes, la chose la plus simple
faire serait simplement faire une réinitialisation dure pour supprimer la propagation de la fusion de
histoire. Toutefois, si d'autres personnes ont déjà une copie de la fusion de valider, puis
vous créerez du travail supplémentaire pour eux pendant qu'ils essayent de re-synchroniser leurs copies de
master
avec la version réécrite de la vôtre.
donc vous avez besoin de comprendre quelle option vous voulez utiliser. Je vais donner les étapes pour les deux, en utilisant la commande ligne:
Supprimer Commettre de l'Histoire
git checkout master
git push origin master --force
qui écrasera le commit de fusion sur origin/master
avec l'état actuel
de votre branche locale master
, supprimant ainsi la commit de fusion.
Revenir s'Engager avec un autre Inverse s'Engager
git checkout master
git merge origin/master
git revert -m 1 HEAD
qui synchronisera votre succursale locale master
avec origin/master
, et
ensuite, vous pouvez ajouter une propagation inverse en disant git revert
que le
1 st la mère est celle qui doit être considérée comme la "principale"
parent, et il va créer l'inverse s'engager par rapport aux changements apportés
de l'autre parent s'engager.
si plus tard vous décidez que vous voulez apporter les changements de l'autre parent à nouveau, alors vous aurez besoin d'ajouter un autre commit de réversion qui inverse le reversion commit que vous venez de faire (une technique connue sous le nom de "reverting the revenir.)"
voir aussi: