2010-09-27 3 views
2

J'essaye de rétablir une fusion défectueuse, mais les changements d'inversion des deux commandes ne semblent pas corrects.git revert merge - aucune ligne principale ne semble correcte

Voilà comment je fait la fusion commettras:

# merge master into branch: 
git checkout branch 
git merge master 
# resolve conflicts 
git commit 
git push 

Maintenant, je veux revenir cette fusion avec des:

git log b2e 
    commit b2e... 
    Merge: de9... cf4... 
git revert -m 1 -n b2e 

Le problème est que git status montre qu'il ne défaire les conflits I résolu, et non la fusion entière. La commande git revert -m 2 -n b2e annulera les modifications apportées à la branche avant la fusion, ce que je ne souhaite pas non plus.

La deuxième question est: Comment afficher ce qui a été modifié dans un commit de fusion?

git show b2e  # only shows the conflicts I resolved 
git diff b2e de9 # does the same 
git diff b2e cf4 # shows what is different between the branch and master 

Mise à jour: Le de9 validation a été le bon de revenir à et git diff B2E DE9 ne montre ce qui a été commis. Une raison pour laquelle j'étais confus était parce qu'un conflit delete/keep ne s'affichait pas dans le diff, donc je pensais qu'il y avait des changements git ne me montrait pas. diff'ing à cf4, le commit de master, me confondait encore plus parce que je ne comprenais pas très bien ce qui se passait. Il n'est pas nécessaire de répondre à cette question.

Répondre

1

Git revert peut ne pas être ce que vous voulez faire. Le moyen le plus simple de revenir à l'endroit où vous étiez avant de fusionner est d'exécuter git reset --hard HEAD^ à la place (ou d'utiliser le SHA1 du commit auquel vous souhaitez revenir, au lieu de HEAD^), surtout si vous travaillez seul. ou si vous n'avez pas encore poussé votre fusion et/ou revenir. Si vous annulez une fusion à l'aide de revert, vous pouvez rencontrer une situation dans laquelle vous ne pouvez pas facilement recomposer les validations que vous avez annulées, la restauration est enregistrée comme une nouvelle validation et peut généralement devenir confuse rapidement. Voir ici pour des exemples et des stratégies: http://progit.org/2010/03/02/undoing-merges.html