Je ne peux pas fusionner deux branches à cause de l'étape de publication de notre projet, mais je veux savoir s'il y a un conflit entre les deux branches. Comment puis-je le faire ?
Réponses
Trop de publicités?Supposons que vous êtes sur le master
et vous souhaitez tester si la branche dev
peut être fusionnée sans conflit dans la branche master
.
# In the master branch
git merge dev --no-ff --no-commit
Après cela, vous serez en mesure de savoir s'il y a un conflit ou non.
Pour revenir dans une situation normale, il suffit d'interrompre la fusion :
git merge --abort
Selon la documentation git :
--ff
Ne pas générer un commit de fusion si la fusion s'est résolue comme une avance rapide, seulement mettre à jour le pointeur de branche. C'est le comportement par défaut.
-no-ff
Générer un commit de fusion même si la fusion s'est résolue comme un fast-forward.
--commit
Effectuez la fusion et livrez le résultat. Cette option peut être utilisée pour remplacer --no-commit.
--no-commit
Avec --no-commit, la fusion est exécutée mais fait semblant d'avoir échoué et n'est pas autocommandée, pour donner à l'utilisateur une chance d'inspecter et de modifier le résultat de la fusion avant de la valider.
Fournir une réponse basée sur un cas d'utilisation - vous êtes sur une branche de fonctionnalité - travaillant sur un changement. Pendant ce temps, un autre collègue effectue des modifications sur un fichier partagé et les fusionne dans le tronc. Vous êtes maintenant prêt à fusionner. À ce stade, vous rencontrez le problème du conflit de fusion.
Assurez-vous que vous avez la dernière version de la branche trunk
git fetch
git checkout trunk
git pull
Revenir à la branche des fonctionnalités
git checkout feature
Dans la branche feature, simuler la fusion dans la branche trunk comme une avance rapide (--no-ff). Le --no-commit empêchera un autocommit
git merge trunk --no-ff --no-commit
Inspectez les fichiers.
- Les lignes entre [<<<<<<< HEAD] et [=======] sont celles dans branche de fonctionnalité
- Les lignes entre [=======] et [>>>>>>> trunk] sont celles de la branche trunk
Pour abandonner la fusion simulée et revenir à votre état initial, exécutez
git merge --abort