Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Visual Studio 2019 | Visual Studio 2022
Lorsque vous fusionnez ou rebasez, vous indiquez à Git d’intégrer les modifications apportées à une branche avec les modifications apportées à une autre. Souvent, Git effectue une fusion ou une rebase automatiquement sans votre assistance. Toutefois, si Git découvre qu’une modification apportée à une branche est en conflit avec une modification apportée à une autre, elle vous invite à résoudre le conflit. Un conflit de fusion peut se produire lorsque les branches fusionnées modifient la même ligne de fichier différemment, ou lorsqu’une branche modifie un fichier et qu’une autre branche la supprime. Le processus de résolution des conflits de fusion s’applique à la fois à la fusion Git et à la rebase.
Vous pouvez résoudre les conflits de fusion dans Visual Studio ou à l’aide de la ligne de commande et de n’importe quel éditeur de texte.
Pour obtenir une vue d’ensemble du flux de travail Git, consultez le didacticiel Git Azure Repos.
Prerequisites
| Catégorie | Spécifications |
|---|---|
| Accès au projet | Membre d’un projet. |
| Permissions | - Afficher le code dans des projets privés : accès au moins de base . - Clonez ou contribuez au code dans des projets privés : membre du groupe de sécurité Contributeurs ou autorisations correspondantes dans le projet. - Définir des autorisations de branche ou de référentiel : gérer les autorisations pour la branche ou le référentiel. - Modifier la branche par défaut : modifiez les autorisations des stratégies pour le référentiel. - Importez un référentiel : membre du groupe de sécurité Administrateurs de projet ou de l’autorisation Créer au niveau du projet Git surAutoriser. Pour plus d’informations, consultez Définir des autorisations de dépôt Git. |
| Services | Dépôts activés. |
| Outils | Optional. Utilisez les commandes az repos : Azure DevOps CLI. |
Note
Dans les projets publics, les utilisateurs disposant d’un accès aux parties prenantes ont un accès complet à Azure Repos, notamment l’affichage, le clonage et la contribution au code.
| Catégorie | Spécifications |
|---|---|
| Accès au projet | Membre d’un projet. |
| Permissions | - Afficher le code : Accès de base au moins. - Cloner ou contribuer au code : membre du groupe de sécurité Contributeurs ou autorisations correspondantes dans le projet. |
| Services | Dépôts activés. |
Comprendre les conflits de fusion
La fusion ou la rebase Git intègre les validations d’une branche source dans votre branche locale actuelle (branche cible). La fusion Git effectue un transfert rapide ou une fusion sans transfert rapide. La fusion sans transfert rapide est également connue sous le nom de fusion tridirectionnel ou de fusion vraie . La rebase Git est un autre type de fusion. Ces types de fusion sont présentés dans le diagramme suivant.
Pour la fusion Git, si l’extrémité de la branche cible existe dans la branche source, le type de fusion par défaut est une fusion rapide vers l’avant. Sinon, le type de fusion par défaut est une fusion sans transfert rapide.
Une fusion à transfert rapide ne peut jamais avoir de conflit de fusion, car Git n’applique pas de fusion rapide si la pointe de la branche cible a divergé de la branche source. Par défaut, Git utilise une fusion rapide dans la mesure du possible. Par exemple, Git applique une fusion rapide sur une branche locale que vous mettez à jour uniquement en extrayant de sa branche distante.
Une fusion sans transfert rapide génère une nouvelle branche cible « validation de fusion » qui intègre les modifications de branche source avec les modifications de branche cible. Les modifications applicables sont celles apportées après la dernière validation commune aux deux branches. Dans le diagramme précédent, la validation C est la dernière validation commune dans les deux branches. Si une modification de branche source est en conflit avec une modification de branche cible, Git vous invite à résoudre le conflit de fusion. La validation de fusion (L) contient les modifications de branche source et de branche cible intégrées. Les conseils de branche source et cible (K et E) sont les parents de la validation de fusion. Dans l’historique de validation de votre branche, une validation de fusion est un marqueur utile pour une opération de fusion et indique clairement quelles branches ont été fusionnées.
Git rebase resequence l’historique des validations de la branche cible afin qu’elle contienne toutes les validations de branche source, suivie de toutes les validations de branche cible depuis la dernière validation commune. Dans le diagramme précédent, la validation C est la dernière validation commune dans les deux branches. Une autre façon de le voir est qu’une rebase relecture les modifications de votre branche cible en haut de l’historique de branche source. Si une modification de branche source est en conflit avec une modification de branche cible, Git vous invite à résoudre le conflit de fusion. Comme avec la fusion à transfert rapide, une rebase ne crée pas de validation de fusion. Notamment, une nouvelle base modifie la séquence des validations de branche cible existantes, ce qui n’est pas le cas pour les autres stratégies de fusion. Dans le diagramme précédent, le commit K' contient les mêmes modifications que K, mais a un nouvel ID de validation, car il renvoie à la validation E au lieu de C.
La fusion Git et la rebase ne modifient que la branche cible. La branche source reste inchangée. Lorsque vous rencontrez un ou plusieurs conflits de fusion, vous devez les résoudre pour terminer la fusion ou la rebase. Vous pouvez également annuler l’opération de fusion/rebase et renvoyer la branche cible à son état antérieur.
Pour plus d’informations sur les options et stratégies de fusion, consultez le manuel de référence Git et les stratégies de fusion Git.
Quand résoudre les conflits de fusion
La fusion Git et la rebase Git sont largement utilisées dans le flux de travail Git. Lors de l’utilisation d’une fonctionnalité locale ou d’une branche de correction de bogues, il est courant de :
- Conservez votre branche locale
mainactuelle avec son équivalent distant en extrayant régulièrement pour extraire et fusionner des validations distantes. - Intégrez les mises à jour de branche locale
mainà votre branche de fonctionnalité locale à l’aide d’une nouvelle base ou d’une fusion. - Sauvegardez votre travail sur la branche de fonctionnalité locale en le transmettant à la branche distante correspondante.
- À la fin de la fonctionnalité, créez une demande de tirage pour fusionner votre branche de fonctionnalité distante dans la branche distante
main.
En intégrant fréquemment des modifications à distance dans votre dépôt local, vous pouvez rester au courant du travail récent par d’autres personnes et résoudre rapidement les conflits de fusion qui se produisent.
Résoudre les conflits de fusion
Le processus de résolution des conflits de fusion s’applique à la fois à la fusion Git et au rebase Git. Bien que les étapes suivantes décrivent comment résoudre les conflits de fusion pendant une fusion, vous pouvez également résoudre les conflits de fusion lors d’une rebase.
Conseil / Astuce
Si la branche source est une branche de suivi à distance , vérifiez que la branche est up-to-date en exécutant une extraction Git avant une fusion. Vous pouvez également exécuter la commande pull Git, qui combine une extraction Git avec une fusion Git.
- Visual Studio 2022
- Visual Studio 2019 - Menu Git
- Visual Studio 2019 - Team Explorer
- Ligne de commande Git
Visual Studio 2022 offre une expérience de contrôle de version Git à l’aide du menu Git , des modifications Git et des menus contextuels dans l’Explorateur de solutions. Visual Studio 2019 version 16.8 offre également l’interface utilisateur Git team Explorer . Pour plus d’informations, consultez l’onglet Visual Studio 2019 - Team Explorer .
Dans le volet Branches de la fenêtre Référentiel Git , consultez la branche cible. Cliquez ensuite avec le bouton droit sur la branche source et choisissez Fusionner <la branche> source dans <la branche> cible.
Visual Studio vous avertit si Git a arrêté la fusion en raison de conflits. Dans ce cas, vous pouvez résoudre les conflits ou annuler la fusion et revenir à l’état de pré-fusion. La section Modifications non fusionnées de la fenêtre Modifications Git répertorie les fichiers avec des conflits de fusion. Pour un fichier avec des conflits de fusion dans son contenu, double-cliquez sur le fichier pour l’ouvrir dans l’éditeur de fusion.
Dans l’éditeur de fusion, le volet Entrant affiche la version du fichier de branche source, le volet Actif affiche la version du fichier de branche cible et le volet Résultats affiche le fichier de fusion résultant. Pour appliquer des modifications spécifiques de branche source ou cible, cochez la case en regard des lignes en conflit que vous souhaitez conserver. Vous pouvez également modifier directement le fichier de fusion dans le volet Résultats . Choisissez Accepter la fusion une fois que vous avez résolu tous les conflits de fusion dans le fichier actif. Répétez cette étape pour chaque fichier avec des conflits de contenu.
Pour un fichier modifié dans une branche et supprimé dans l’autre, cliquez avec le bouton droit sur le fichier et sélectionnez l’action de branche souhaitée.
Dans la fenêtre Modifications Git, entrez un message de validation et choisissez Commit Staged pour terminer la fusion, une fois que vous avez résolu tous les conflits de fusion pour tous les fichiers.