Gérer les dépôts Git dans Visual Studio

La fenêtre Dépôt Git fournit une expérience Git en plein écran qui vous permet de gérer votre dépôt Git et de vous tenir à jour sur les projets de votre équipe. Par exemple, vous pouvez avoir besoin de réinitialiser, rétablir ou faire un cherry-pick de commits, ou simplement nettoyer votre historique de commit. La fenêtre Dépôt Git est également l’endroit idéal pour visualiser et gérer vos branches.

La gestion de version de Visual Studio est facile avec Git. Vous pouvez travailler à distance avec le fournisseur Git de votre choix, comme GitHub ou Azure DevOps. Vous pouvez également travailler localement sans fournisseur.

Ouvrir la fenêtre Référentiel Git

Pour ouvrir la fenêtre Référentiel Git, choisissez Afficher>le référentiel Git (ou appuyez sur Ctrl+0, Ctrl+R), ou appuyez sur Ctrl+Q et sous Caractéristiques, recherchez Référentiel Git.

Changer le dernier commit (amender)

La mise à jour du dernier commit est appelée amendement dans Git, et il s’agit d’un cas d’usage courant. Parfois, vous devez simplement mettre à jour votre message de commit, ou vous pouvez avoir besoin d’ajouter un changement de dernière minute.

Vous pouvez amender un commit sur la ligne de commande avec la commande suivante :

git commit --amend

La fenêtre Référentiel Git facilite la mise à jour de votre dernier message de commit. Ouvrez les détails du dernier commit en double-cliquant dessus, puis sélectionnez l’option Modifier à côté du message de commit.

Capture d’écran de la modification d’un message de commit.

Quand vous avez fini de modifier votre message de commit, sélectionnez Amender.

Capture d’écran de l’enregistrement d’un message modifié en sélectionnant Amender.

Si vous devez ajouter des changements de code à votre dernier commit, vous pouvez le faire dans la fenêtre Changements Git. Cochez la case Amender, puis commitez vos changements.

Capture d’écran de l’amendement des changements de code dans la fenêtre Changements Git.

Pour en savoir plus sur la modification, y compris sur la façon de changer les messages de commit autres que le plus récent, consultez Outils Git - Réécrire l'historique sur le site Web de Git.

Commits de fusion (squash)

Pour fusionner une série de commits, Git fournit une option permettant de faire une fusion Squash des commits en un seul commit. Cette option peut être utile si vous faites souvent des commits et que vous vous retrouvez avec une longue liste de commits que vous voulez nettoyer avant de les pousser dans un dépôt distant.

Vous pouvez faire une fusion Squash d’un commit sur la ligne de commande avec la commande suivante :

git rebase -i HEAD~2

Ensuite, remplacez pick parsquash, enregistrez et mettez à jour le message de commit.

Capture d’écran du remplacement de pick par squash.

Pour fusionner des commits dans Visual Studio, utilisez la touche Ctrl pour sélectionner plusieurs commits à fusionner. Cliquez ensuite avec le bouton droit et sélectionnez Fusion Squash des commits. Visual Studio combine automatiquement vos messages de commit, mais il vaut mieux parfois fournir un message mis à jour. Après avoir vérifié et mis à jour votre message de commit, sélectionnez le bouton Squash.

Capture d’écran de la fusion Squash des commits dans Visual Studio.

Pour en savoir plus sur la fusion Squash, consultez Outils Git - Historique de réécriture sur le site web Git.

Fusionner et rebaser des branches

Si vous utilisez des branches Git pour travailler sur différentes fonctionnalités, à un moment donné, vous devez ajouter les mises à jour introduites aux autres branches. Cela peut se produire quand vous travaillez encore sur votre branche de fonctionnalité. Cela peut également se produire quand vous avez terminé de travailler sur votre branche de fonctionnalité et que vous devez conserver vos changements en les ajoutant à une autre branche. Dans Git, vous pouvez ajouter ces mises à jour en fusionnant ou en rebasant des branches.

Notes

Les instructions suivantes utilisent New_Feature comme exemple de nom d’une branche de fonctionnalité. Remplacez-le par le nom de votre propre branche.

Pour fusionner la branche primaire dans votre branche de fonctionnalité sur la ligne de commande, utilisez les commandes suivantes :

git checkout New_Feature
git merge main

Pour faire de même dans Visual Studio, extrayez la branche de fonctionnalité en double-cliquant dessus dans la liste des branches. Cliquez ensuite avec le bouton droit sur main et sélectionnez Fusionner « main » dans « New_Feature ».

Capture d’écran de la fusion de branches dans Visual Studio.

Pour rebaser la branche primaire dans votre branche de fonctionnalité sur la ligne de commande, utilisez les commandes suivantes :

git checkout New_Feature
git rebase main

Pour faire de même dans Visual Studio, extrayez la branche de fonctionnalité en double-cliquant dessus dans la liste des branches. Cliquez ensuite avec le bouton droit sur main et sélectionnez Rebaser « New_Feature » sur « main ».

Capture d’écran du rebasage de branches dans Visual Studio.

Pour en savoir plus sur la fusion, le rebasage et les branches en général, consultez Branchement Git sur le site web Git.

Copier des commits (cherry-pick)

Copiez les commits d’une branche vers une autre en utilisant l’option cherry-pick. Contrairement à une fusion ou un rebasage, le cherry-pick apporte uniquement les changements des commits que vous sélectionnez, au lieu de tous les changements, à une branche. Le cherry-pick est un excellent moyen de résoudre ces problèmes courants :

  • Commit accidentel dans la mauvaise branche. Faites un cherry-pick des changements de la branche correcte, puis réinitialisez la branche d’origine sur le commit précédent.
  • Tirage d’un ensemble de commits effectués dans une branche de fonctionnalité, afin de les refusionner plus tôt dans votre branche primaire.
  • Déplacement de commits spécifiques à partir de la branche primaire sans rebasage de votre branche.

Pour copier les changements d’un commit vers votre branche actuelle à partir de la ligne de commande, utilisez la commande suivante :

git cherry-pick 7599e530

Pour faire de même dans Visual Studio, affichez un aperçu de la branche dans laquelle vous pouvez faire un cherry-pick d’un commit en la sélectionnant d’un simple clic. Cliquez ensuite avec le bouton droit sur le commit ciblé, puis sélectionnez Cherry-Pick.

Capture d’écran du cherry-pick dans Visual Studio.

Une fois l’opération terminée, Visual Studio affiche un message de réussite. Le commit ciblé par le cherry-pick s’affiche dans la section Sortant.

Pour en savoir plus sur le cherry-pick des commits, consultez la page web Git de la commande cherry-pick.

Annuler les changements

Utilisez la commande revert pour annuler les changements de commits poussés dans les branches partagées. La commande revert crée un commit qui annule les changements d’un commit précédent. La commande revert ne réécrit pas l’historique du dépôt, vous pouvez donc l’utiliser sans crainte quand vous travaillez avec d’autres personnes.

Pour rétablir les changements d’un commit à partir de la ligne de commande, utilisez les commandes suivantes. Remplacez l’ID d’exemple par l’ID d’un commit réel dans votre branche.

git revert 53333305
git commit

Dans l’exemple précédent, les commandes annulent les changements du commit 53333305 et créent un commit sur la branche. Le commit d’origine est toujours dans l’historique Git. Pour faire de même dans Visual Studio, cliquez avec le bouton droit sur le commit que vous souhaitez rétablir, puis sélectionnez Rétablir. Une fois que vous avez confirmé votre action et que l’opération est terminée, Visual Studio affiche un message de réussite et un nouveau commit s’affiche dans la section Sortant.

Capture d’écran de la restauration dans Visual Studio.

Sélectionnez le nouveau commit pour confirmer qu’il annule les changements du commit restauré.

Capture d’écran de la confirmation d’une opération de restauration.

Pour en savoir plus sur l’annulation des changements, consultez la page web Git de la commande revert.

Réinitialiser une branche sur un état précédent

Utilisez la commande reset pour ramener une branche de votre dépôt local au contenu d’un commit précédent. Cette action ignore tous les changements qui se sont produits depuis le commit sur lequel vous réinitialisez votre branche.

Avertissement

Ne réinitialisez pas les branches partagées, car vous risquez de supprimer le travail d’autres personnes. Utilisez la commande revert à la place.

Pour réinitialiser une branche sur un état précédent à partir de la ligne de commande, utilisez la commande suivante. Remplacez l’ID d’exemple par l’ID d’un commit réel dans votre branche.

git reset --hard 53333305

La partie --hard de la commande indique à Git de réinitialiser les fichiers sur l’état du commit précédent et d’ignorer les changements indexés. Pour faire de même dans Visual Studio, cliquez avec le bouton droit sur le commit sur lequel vous voulez réinitialiser votre branche, puis sélectionnez Réinitialiser>Supprimer les changements (--hard).

Capture d’écran montrant la réinitialisation d’une branche dans Visual Studio.

Pour en savoir plus sur la réinitialisation des branches, consultez la page web Git de la commande reset.