56 votes

Azure DevOps - Pull Request Git "Prochaines étapes : Résoudre manuellement ces conflits et pousser les nouvelles modifications vers la branche source."

J'ai créé une branche nommée dev.

J'ai fait une demande de transfert pour envoyer le code de développement vers le master, lorsque je fais cette demande de transfert il me dit : enter image description here

Plus de 50 conflits empêchent la fusion automatique "Prochaines étapes : Résoudre manuellement ces conflits et pousser les nouveaux changements vers la branche source."

Où dois-je aller à partir de là ? Je veux juste que toutes les branches de développement remplacent ce qui se trouve dans master. Je ne vois aucune option pour résoudre ces conflits.

1 votes

J'ai bien un bouton "Terminer" mais il est grisé.

7 votes

La fusion manuelle n'est pas possible dans l'environnement VSTS. Vous devez fusionner la branche master dans votre branche dev, résoudre les conflits, commiter et pousser.

1 votes

Voilà qui répond à ma question. Donc, dois-je fusionner la branche au lieu de faire une demande de retrait ?

80voto

Harshil Lodhi Points 3589

Vous devrez effectuer les opérations suivantes sur votre PC

Sur la branche dev

$ git pull origin master - Cela va créer un commit de fusion et vous devrez résoudre les conflits dans les fichiers qui sont modifiés à la fois sur dev et master. git status affichera la liste des fichiers avec des changements conflictuels.

Après avoir résolu les conflits, commitez tous les changements et forcez votre branche. Après cela, vous devriez être en mesure de terminer le PR.

Lien d'aide pour plus de détails

3 votes

Meilleur lien vers la documentation - Vous trouverez ci-dessous un lien vers la documentation Azure DevOps "Resolve merge conflicts", qui explique ce que sont les conflits de fusion et donne des instructions sur la manière de les résoudre en utilisant la ligne de commande ou Visual Studio. docs.microsoft.com/fr/us/azure/devops/repos/git/

5voto

Marina Liu - MSFT Points 23516

Puisque vous devez conserver la version des fichiers sur dev branche (conserve la branche source tout en modifiant les fichiers dans la branche cible) master ), vous devez donc effectuer des modifications sur master pour résoudre les fichiers en conflit, et assurez-vous d'avoir la permission de pousser les changements vers la branche master branche.

Vous pouvez utiliser les options ci-dessous :

Option 1 : fusionner directement

Dans votre repo local, vous pouvez exécuter les commandes suivantes pour fusionner dev en master tout en conservant la version des fichiers de conflit comme branche dev branche :

git checkout master
git merge dev -X theirs
git push origin master

Et dans la pull request existante que vous avez créée, il sera indiqué que la branche a été fusionnée. Donc vous pouvez abandonner la pull request.

Option 2 : fusionner quand même via une demande de tirage (résoudre les conflits sur la branche master)

Vous pouvez utiliser les commandes ci-dessous pour résoudre les conflits dans master branche :

# In yout local repo
git checkout master
git checkout dev -- .
git commit -m 'replace master branch version by dev for the conflict files'
git push origin master 

Alors que les changements dans la demande de retrait existante ne seront pas mis à jour si un nouveau commit est poussé vers la branche cible (master). Et vous pouvez trouver le rapport similaire Le diff de la demande de tirage ne se met pas à jour lorsqu'un commit de la PR est fusionné à la cible via une autre branche. .

Cela signifie que la demande de retrait dans la page Web montre toujours les conflits. Vous devez abandonner la pull request existante et la réactiver (ou en créer une nouvelle) pour fusionner dev dans la branche master.

1 votes

J'essaie l'option 2, et j'obtiens "Pushes to this branch are not permitted ; you must use a pull request to update this branch".

0 votes

Poussée vers master est une mauvaise recommandation. Il n'y a aucune raison de pousser sur master pour conserver vos modifications. Vous avez tous vos commits sur la branche dev.

2voto

Scott Koland Points 63

J'ai dû faire un rebase . J'ai dû parcourir tous les commits et appliquer mes changements - ils étaient assez importants, renommant les espaces de noms et les noms de méthodes, etc. Cela m'a ensuite permis de continuer à faire un Pull Request dans le portail Azure DevOps. En fait, je pourrais simplement rafraîchir les changements pour le système existant de Pull Request et les conflits de fusion automatique ont été résolus.

La fusion du code n'a pas résolu le problème, seulement rebase travaillé.

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