J'ai eu une situation classique - maître et plusieurs branches. J'ai besoin de fusionner les modifications (de nombreuses modifications via plusieurs validations) dans master, mais je souhaite ignorer toutes les modifications apportées à master lui-même. Je veux que master soit un clone de ma branche.
Je sais que je pourrais simplement extraire chaque fichier de la branche au maître et valider les modifications, mais cela ne rendra pas le graphique joli:)
Comment puis-je y parvenir? Résoudre les conflits de fusion n'est pas suffisant, car il y a encore des changements qui ont été fusionnés automatiquement. Dois-je les supprimer manuellement ou y a-t-il une git merge --magic
option qui pourrait m'aider?
AJOUT :
J'aimerais que les fichiers soient une copie exacte entre la branche et le maître (pas l'historique des validations), mais j'aimerais que tout cela soit réduit à une seule validation.
Solution du problème
La réponse dépend si vous vous souciez de préserver l'historique de la branche master. Si vous utilisez un git reset --hard
, vous perdrez l'historique du maître qui a divergé des branches de fonctionnalité.
Si vous souhaitez conserver l'historique, une meilleure astuce serait de le faire en deux fusions, la première fusion utilisant la -s ours
stratégie de fusion.
git checkout feature
git merge -s ours master
git checkout master
git merge --ff-only feature
La première fusion git merge -s ours master
créera un commit de fusion vide sur feature
. Le code sera une copie exacte de ce qui est sur feature
.
La deuxième fusion fera avancer rapidement le maître vers le commit de fusion vide. Le résultat final sera deux branches avec exactement le même code et des historiques préservés. Le code sera une copie exacte de ce qui était présent avant les deux fusions.
Autant que je sache, il n'y a pas une seule option/commande pour effectuer cette opération. -Xtheirs
n'est pas vraiment une stratégie de fusion, c'est juste une option pour la stratégie de fusion par défaut qui lui indique comment résoudre les conflits.
git merge -s ours
existe spécifiquement pour l'opération de fusion de l'historique des branches obsolètes et de rejet des modifications. Il n'y a pas de -s theirs
stratégie.
L'astuce ici est que vous voulez jeter les modifications sur master, mais conserver la branche par la suite. Normalement, vous supprimeriez simplement la branche obsolète après avoir effectué une -s ours
fusion.
Aucun commentaire:
Enregistrer un commentaire