web-dev-qa-db-fra.com

Quelle est la meilleure façon de forcer une fusion dans git?

J'ai un projet avec une branche dev et une branche production. Récemment, j'ai travaillé sur un grand nouvel ensemble de fonctionnalités en dev, donc je n'ai pas fusionné dans la production depuis environ deux semaines. En attendant, cependant, il y avait quelques bugs qui devaient être corrigés en production.

Pour la plupart, j'ai pu apporter les correctifs en dev et les sélectionner en production. Parfois, cependant, je devais réparer la production à la main, car les correctifs étaient sensiblement différents dans les deux branches. Le fait est que les deux branches ont divergé un peu depuis leur séparation.

Maintenant, je veux simplement pousser tous les développeurs en production. Je ne me soucie pas de garder les engagements en production depuis la scission, je veux juste que la production ressemble exactement à dev. [EDIT: Je veux que la production ressemble exactement à dev depuis la scission, mais je ne veux pas réécrire l'histoire avant la scission] Cependant, quand j'essaye de fusionner, j'obtiens des dizaines de conflits que je préfèrent ne pas fixer à la main.

Quelle est la meilleure façon de forcer une fusion dans git? Puis-je revenir à mes modifications de production dans la division, puis simplement avancer rapidement vers la branche de développement?

31
Sam Fen

Vous pouvez simplement pousser votre branche de développement sur la branche de production du référentiel maître:

git Push --force upstream-remote dev:production

upstream-remote peut simplement être Origin si vous êtes sur un clone par défaut.

Mis à jour pour la question mod'ed:

Vous ne voulez probablement pas revert au sens git mais, oui, c'est plus ou moins ce que vous voulez faire. Quelque chose comme

git checkout -b merge <split hash>
git merge dev
git Push --force Origin merge:production

<split hash> était le dernier commit sur la production que vous souhaitez conserver.

26
smparkes