2017-05-09 7 views
2

Il ya longtemps dans l'histoire git, je peux voir que quelqu'un a fait une mauvaise fusion de deux branches. Il avait un conflit, alors il a simplement supprimé beaucoup de changements conflictuels. Le résultat est que la branche principale ne contient pas ces changements (et nous ne l'avons même pas suspecté jusqu'à ce que nous ayons vérifié).Rétablir la fusion erronée dans GIT

Branch fonction a été fusionné dans le développement branche . Feature contient des modifications X Y Z. Cependant, Y et Z ont été supprimés lors de la fusion, de sorte que le développement ne contient que X. Je veux fusionner fonction en développement à nouveau, parce que je dois tous les changements. Cependant, GIT pense qu'ils sont déjà fusionnés (il sait qu'ils sont en conflit et ont été "résolus" manuellement).

Comment puis-je effectuer cette fusion?

Quelques notes:

  • Je ne peux pas simplement fusionner, les modifications ne sont pas visibles du tout.
  • Je ne peux pas choisir, ça ne marche pas.
  • Je ne veux pas « juste copier les fichiers et les engager à nouveau » parce que cela signifierait que GIT a échoué dans un cas d'utilisation
  • J'ai essayé d'utiliser différentes stratégies de fusion git cruciale avec succès partiel, mais chaque feuille de stratégie quelques fichiers et à la fin je n'ai pas tous les changements dans le développement

Bien sûr, la fusion fonction dans une nouvelle branche (qui commence à partir d'un développement commettras, juste avant la mauvais commit) fonctionne. Je peux voir tous les changements nécessaires. Mais encore une fois, je ne peux pas fusionner cette nouvelle branche en développement pour les raisons ci-dessus.

+0

Qu'est-ce que vous voulez dire que la sélection de cerises ne fonctionne pas? Il alerte à nouveau sur les conflits, mais il peut ensuite être résolu manuellement ... mais heureusement, cette fois-ci. – airos

Répondre

0

Jetez un oeil à l'entrée de blog git sur la façon de défaire se confond: https://git-scm.com/blog/2010/03/02/undoing-merges.html

Il recommande d'utiliser revert git pour annuler la fusion commit. Et pour résoudre le problème de la recomposition (comme Git se plaint que ces commits sont déjà dans l'histoire) il recommence à inverser le retour (au lieu d'essayer de fusionner à nouveau).