Partager via


Mettre à jour le code avec extraction, fusion et extraction

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Visual Studio 2019 | Visual Studio 2022

Lorsqu’il existe plusieurs contributeurs à un projet, conservez votre dépôt Git local mis à jour en téléchargeant et en intégrant le travail que d’autres utilisateurs ont chargés dans le dépôt distant du projet. Ces commandes Git mettent à jour votre dépôt local :

  • Git récupère les nouvelles validations que d’autres utilisateurs ont chargées dans le dépôt distant. Les branches de suivi à distance dans le cache de référentiel local sont mises à jour : les branches locales restent inchangées.
  • La fusion Git intègre des validations d’une ou plusieurs branches sources dans une branche cible.
  • Git rebase intègre les validations d’une branche source dans une branche cible, mais utilise une stratégie différente de la fusion Git.
  • Git pull effectue une extraction, puis une fusion ou une rebase pour intégrer des validations extraites dans votre branche locale actuelle.

Visual Studio utilise un sous-ensemble de ces commandes Git lorsque vous synchronisez votre dépôt local avec un dépôt distant.

Pour obtenir une vue d’ensemble du flux de travail Git, consultez le didacticiel Git Azure Repos.

Cet article fournit des procédures pour les tâches suivantes :

  • Télécharger les modifications avec extraction
  • Mettre à jour des branches avec fusion ou rebase
  • Télécharger les modifications et mettre à jour les branches avec extraction

Télécharger les modifications avec extraction

Git récupère les validations de branche distante et les objets de fichiers référencés qui n’existent pas dans votre dépôt local et met à jour les branches de suivi à distance dans le cache de référentiel local. Les branches de suivi à distance sont des copies en lecture seule mises en cache localement des branches distantes et ne sont pas vos branches locales. Git fetch ne met pas à jour vos branches locales. Par exemple, si un dépôt distant désigné par origin une branche a une bugfix3 branche, Git fetch met à jour la branche de suivi à distance nommée origin/bugfix3 et non votre branche locale bugfix3 . Vous pouvez utiliser des branches de suivi à distance pour :

  • Comparez une branche de suivi à distance avec une branche locale pour examiner les modifications extraites.
  • Fusionnez une branche de suivi à distance dans une branche locale.
  • Créez une branche locale à partir d’une branche de suivi à distance.

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 .

  1. Dans la fenêtre Modifications Git , choisissez Fetch. Sélectionnez ensuite sortant/entrant pour ouvrir la fenêtre Dépôt Git .

    Capture d’écran des boutons Fetch et lien Entrant dans la fenêtre Modifications Git de Visual Studio 2019.

    Vous pouvez également choisir Fetch dans le menu Git.

    Capture d’écran de l’option Fetch dans le menu Git de Visual Studio 2019.

  2. Dans la fenêtre Référentiel Git , les validations extraites s’affichent dans la section Entrante . Sélectionnez une validation extraite pour afficher la liste des fichiers modifiés dans cette validation. Sélectionnez un fichier modifié pour afficher un affichage différent du contenu modifié.

    Capture d’écran du menu Référentiel Git dans Visual Studio 2019.

Conseil / Astuce

Fetch ne supprime pas les branches de suivi à distance dans votre cache de dépôt local qui n’ont plus d’équivalent distant. Pour configurer Visual Studio afin de nettoyer les branches de suivi à distance obsolètes lors d’une extraction :

  • Sélectionnez options Outils>Options>Contrôle de> code sourceParamètres globaux Git.
  • Définissez les branches distantes Prune pendant l’option d’extraction sur True.

Après une extraction Git, vous pouvez comparer une branche locale à sa branche de suivi à distance correspondante pour voir ce qui a changé sur la branche distante. Si vous décidez de mettre à jour votre branche locale actuelle avec des modifications extraites, vous pouvez effectuer une fusion Git ou rebaser. Vous pouvez également exécuter une extraction Git, qui combine une extraction Git avec une fusion Git ou une rebase. La fusion Git et la rebase Git mettent à jour une branche cible en appliquant des validations à partir d’une branche source. Toutefois, la fusion Git et la rebase Git utilisent différentes stratégies. Pour plus d’informations, consultez Mettre à jour les branches avec fusion ou rebasement et Quand rebaser ou fusionner.

Mettre à jour des branches avec fusion ou rebase

La fusion Git et la rebase Git intègrent des validations à partir 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.

Diagramme montrant les validations avant et après lors de l’utilisation de la fusion et de la rebase.

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 :

  1. Conservez votre branche locale main actuelle avec son équivalent distant en extrayant régulièrement pour extraire et fusionner des validations distantes.
  2. Intégrez les mises à jour de branche locale main à votre branche de fonctionnalité locale à l’aide d’une nouvelle base ou d’une fusion.
  3. Sauvegardez votre travail sur la branche de fonctionnalité locale en le transmettant à la branche distante correspondante.
  4. À la fin de la fonctionnalité, créez une demande de tirage pour fusionner votre branche de fonctionnalité distante dans la branche distante main .

Cette approche vous aide à :

  • Restez au courant du travail récent par d’autres personnes susceptibles d’affecter votre travail.
  • Résolvez rapidement les conflits entre votre travail et celui d’autres personnes.
  • Appliquez votre nouvelle fonctionnalité en plus du contenu du projet up-to-date.
  • Obtenez une révision de demande de tirage (pull request) de votre travail.

Merge

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 Git à 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 divergent 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 Git sans rapidité 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.

La fusion Git modifie uniquement 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. Vous pouvez également annuler l’opération de fusion 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.

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 la fusion.

  1. Choisissez Git > Manage Branches dans la barre de menus pour ouvrir la fenêtre Dépôt Git .

    Capture d’écran de l’option Gérer les branches dans le menu Git de Visual Studio 2019.

  2. Dans la fenêtre Dépôt Git , cliquez avec le bouton droit sur la branche cible, puis sélectionnez Extraction.

    Capture d’écran de l’option Extraction dans la fenêtre Dépôt Git de Visual Studio 2019.

  3. Cliquez avec le bouton droit sur la branche source, puis sélectionnez Fusionner <la branche> source dans <la branche> cible.

    Capture d’écran de l’option Fusionner dans la fenêtre Dépôt Git de Visual Studio 2019.

  4. Visual Studio affiche un message de confirmation après une fusion réussie.

    Capture d’écran du message de confirmation de fusion dans la fenêtre Dépôt Git de Visual Studio 2019.

    Si la fusion est interrompue en raison de conflits de fusion, Visual Studio vous avertit. Vous pouvez résoudre les conflits ou annuler la fusion et revenir à l’état de pré-fusion.

    Capture d’écran du message de conflit de fusion dans la fenêtre Dépôt Git de Visual Studio 2019.

Rebase

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. Une autre façon de l’afficher est qu’une rebase Git relecture les modifications apportées à votre branche cible en plus de l’historique des branches sources. 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 rebase Git ne crée pas de validation de fusion. Notamment, Git rebase change 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.

Git rebase uniquement modifie 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 rebase. Vous pouvez également annuler l’opération de rebase et renvoyer la branche cible à son état antérieur.

Si vous êtes la seule personne travaillant sur votre fonctionnalité ou branche de correction de bogues, envisagez d’utiliser git rebase pour intégrer de nouvelles main validations de branche dans celle-ci. Sinon, utilisez la fusion Git. Pour plus d’informations sur la rebase Git et quand l’utiliser, consultez Appliquer des modifications avec rebase et rebase et fusion.

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 la rebase.

  1. Choisissez Git > Manage Branches pour ouvrir la fenêtre Dépôt Git .

    Capture d’écran de l’option Gérer les branches dans le menu Git de Visual Studio 2019.

  2. Dans la fenêtre Dépôt Git , cliquez avec le bouton droit sur la branche cible, puis sélectionnez Extraction.

    Capture d’écran de l’option Extraction dans le menu contextuel de la branche dans la fenêtre dépôt Git de Visual Studio 2019.

  3. Cliquez avec le bouton droit sur la branche source, puis sélectionnez Rebase <target-branch> sur <la branche> source.

    Capture d’écran de l’option Rebase dans le menu contextuel de la branche dans la fenêtre Dépôt Git de Visual Studio 2019.

  4. Visual Studio affiche un message de confirmation après une nouvelle base réussie.

    Capture d’écran du message de confirmation de base dans la fenêtre dépôt Git de Visual Studio 2019.

    Si le rebase est arrêté en raison de conflits de fusion, Visual Studio vous avertit. Vous pouvez résoudre les conflits ou annuler la rebase et revenir à l’état de pré-rebase.

    Capture d’écran du message de conflit de base dans la fenêtre dépôt Git de Visual Studio 2019.

Télécharger les modifications et mettre à jour les branches avec extraction

Par défaut, Git pull combine une extraction Git et une fusion Git pour mettre à jour votre branche locale actuelle à partir de son équivalent distant. Si vous le souhaitez, git pull peut effectuer une rebase Git au lieu d’une fusion Git.

Contrairement à Git fetch, Git pull met à jour votre branche locale actuelle immédiatement après le téléchargement de nouveaux commits à partir du dépôt distant. Utilisez git pull lorsque vous savez que vous souhaitez mettre à jour votre branche locale actuelle juste après une extraction Git.

Conseil / Astuce

Pour configurer Visual Studio de manière à rebaser au lieu de fusionner lorsque vous extrayez :

  1. Dans le menu Git, accédez auxparamètres globaux git du contrôle > decode source>>.
  2. Définissez la branche locale rebase lors de l’extraction de l’optionTrue.
  1. Dans la fenêtre Modifications Git , choisissez Pull.

    Capture d’écran du bouton Extraire dans la fenêtre Modifications Git de Visual Studio 2019.

    Vous pouvez également choisir Pull dans le menu Git.

    Capture d’écran de l’option Pull dans le menu Git de Visual Studio 2019.

  2. Un message de confirmation s’affiche une fois l’opération de tirage terminée.

    Capture d’écran du message de confirmation de tirage dans la fenêtre Modifications Git dans Visual Studio 2019.

    S’il existe des conflits pendant la partie fusion de l’opération d’extraction, Visual Studio vous avertit. Vous pouvez résoudre les conflits ou annuler la fusion et revenir à l’état de pré-fusion.

    Capture d’écran du message de conflit d’extraction dans la fenêtre Modifications Git dans Visual Studio 2019.

Note

Dans Visual Studio, Synceffectue un pull , puis un push pour synchroniser une branche locale et distante. Pour plus d’informations sur la synchronisation, consultez Utiliser git fetch, pull, push et sync pour le contrôle de version dans Visual Studio.

Étapes suivantes