73 votes

Comment vérifier le conflit entre deux branches, sans avoir à les fusionner ?

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 ?

117voto

Sandro Munda Points 12808

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.

1voto

Jojo Thomas Points 11

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X