Git est un moyen fantastique d’implémenter le contrôle de version dans un projet de codage – si fantastique, en fait, qu’il s’agit presque d’une option obligatoire.

L’idée est de créer des branches dupliquées de votre dépôt principal, de travailler sur le code, puis de fusionner les modifications avec le reste. Cela signifie que vous aurez beaucoup d’anciennes branches dans votre dépôt. Bien que la taille de ces fichiers soit souvent faible, vous voudrez toujours effectuer un git delete sur une branche locale pour garder les choses en ordre.

La bonne nouvelle est que cela ne demande pas beaucoup d’efforts. Cependant, vous devrez réfléchir à la meilleure approche selon que vous fusionnez ou non les modifications, ainsi qu’à ce qu’il convient de faire si vous obtenez une erreur au cours du processus de suppression. Il se peut même que vous deviez restaurer une branche que vous avez supprimée. Chacun de ces scénarios requiert des compétences et des commandes différentes.

Dans ce tutoriel, nous allons vous montrer comment effectuer un git delete sur une branche locale. Mais d’abord, nous allons parler des raisons pour lesquelles vous pourriez vouloir supprimer des branches locales dans Git.

Qu’est-ce qu’une branche Git ?

Les dépôts Git sont une collection de branches – des duplications du code principal à l’intérieur. En fait, vous ne pouvez pas avoir un dépôt Git fonctionnel sans une branche.

Souvent, vous aurez un dépôt principal (les noms sont « main » et « trunk »). Il contiendra le code de production que vous ne voudrez pas modifier. Au lieu de cela, vous créerez une branche dupliquée du dépôt principal, puis vous effectuerez les changements dont vous avez besoin dans votre branche. Lorsque le moment sera venu de ramener ces modifications dans le code principal, vous les vérifierez et les fusionnerez.

Les branches permettent à tous les membres d’une équipe de collaborer sur le même projet, indépendamment les uns des autres. Il n’y a pas de risque de modifier le code de travail ou d’intervenir sur d’autres modifications entre-temps.

Cependant, vous aurez également besoin d’effectuer un git delete sur une branche locale. Il s’agira d’une action régulière pour vous, et il y a un certain nombre de raisons solides de le faire.

Pourquoi supprimer des branches dans Git ?

Votre code de production se trouve dans la branche principale. C’est la seule branche qui a une certaine permanence.

En revanche, presque toutes les autres branches que vous créez ont une durée de vie temporaire. Une fois que vous aurez terminé votre travail, vous livrerez les modifications, puis vous envisagerez de les fusionner avec la branche principale, éventuellement dans un dépôt en ligne tel que GitHub.

Cela signifie que vous aurez souvent plusieurs branches ouvertes en même temps, en fonction du projet et de l’équipe. Cependant, une fois la fusion finalisée, ces branches ne disparaissent pas.

Il y a donc plusieurs raisons pour lesquelles vous souhaitez supprimer une branche locale de Git :

  • L’entretien général : À la maison, lorsque vous avez fini de cuisiner, vous lavez les ustensiles et les rangez. Il en va de même pour le travail sur un dépôt Git : Lorsque vous avez terminé votre travail, vous fusionnez les modifications et supprimez les branches dont vous n’avez plus besoin. Cela facilite également la navigation dans votre projet et votre dépôt.
  • Taille des fichiers du dépôt : Bien que les dépôts Git soient souvent suffisamment petits pour ne pas avoir d’incidence sur la taille d’un projet, vous devez tout de même les surveiller. Une façon de réduire la taille d’un dépôt est de supprimer les branches dont vous n’avez pas besoin.
  • Performances potentielles : Même si votre code principal est performant, une branche peut ne pas l’être, étant donné que vous travaillez dessus. Pour cette raison, vous voudrez garder les branches ouvertes au minimum. Dans le cas contraire, cela pourrait entraîner des performances médiocres pour votre équipe jusqu’à ce que vous mettiez en place et ajustiez un projet.

Comme vous le verrez plus tard, l’exécution de git delete sur une branche locale est simple, pour l’essentiel. Cependant, c’est une bonne idée de comprendre ce qui se passe sous le capot lorsqu’il s’agit d’utiliser cette commande, car elle n’effacera pas tout ce qui concerne la branche de votre dépôt.

Que se passe-t-il lorsque vous supprimez une branche Git locale ?

D’un point de vue technique, une branche n’est qu’un pointeur vers un commit spécifique – une section de code que vous souhaitez inclure dans votre branche principale. C’est pourquoi, lorsque vous supprimez une branche Git locale, les commits sont conservés.

Plus tard, nous parlerons de la récupération de branche, et de ce qui est possible grâce à ces commits qui restent dans votre dépôt. Pour l’instant, comprenez qu’il existe deux types de changements différents :

  • Changements fusionnés : Une fois que vous avez fusionné une branche avec la branche principale, le code sera aussi à jour que possible. En termes techniques, cela revient à déplacer la référence de la branche principale pour rattraper votre branche secondaire.
  • Changements non fusionnés : Si vous ne fusionnez pas les modifications, vous aurez une branche qui ne sera pas aussi à jour que la branche principale. Ainsi, la branche principale ne disposera pas d’un commit de référence à jour.

C’est quelque chose dont nous parlerons plus en détail plus tard. Quoi qu’il en soit, cela soulève un autre point important concernant le moment où il faut supprimer des branches.

Quand effectuer un « Git Delete » sur une branche locale ?

Étant donné les dangers de supprimer une branche avec des changements non fusionnés, il est important de ne pas lancer git delete sur une branche locale avant d’avoir effectué une fusion de code. Cela permet de s’assurer que chaque branche dispose d’une référence à jour et, par extension, du code le plus récent disponible.

C’est également une bonne idée de s’assurer que vous n’aurez besoin d’aucun des commits d’une branche temporaire avant d’effectuer un git delete. Bien que vous puissiez récupérer des branches dans une certaine mesure, il s’agit d’un travail que vous ne voudrez pas effectuer en cas de besoin. Nous vous donnerons un aperçu de cela plus tard.

Comment effectuer un « Git Delete » sur une branche locale

Dans la suite de ce tutoriel, nous allons vous montrer comment effectuer un git delete sur une branche locale. Nous parlerons également de ce qu’il faut faire avec les changements non fusionnés.

Ensuite, nous parlerons des erreurs que vous pourriez rencontrer, puis nous verrons comment restaurer une branche locale supprimée.

Enfin, nous aborderons brièvement les branches distantes et la manière de les supprimer.

Pré-requis

Git lui-même offre un ensemble de commandes simples et vous donne beaucoup de pouvoir sans avoir besoin d’ouvrir un manuel. Malgré cela, il existe plusieurs façons d’accéder à un dépôt Git en fonction de l’application et de l’éditeur de code que vous avez choisis.

Bien que vous puissiez trouver une configuration de « clic minimal » dans une interface graphique dédiée comme GitKraken ou Sublime Merge, nous allons garder les choses simples et utiliser des outils intégrés dans le système d’exploitation.

Pour nous suivre, vous aurez besoin de ce qui suit :

  • Un accès à la ligne de commande : Nos exemples utiliseront macOS et iTerm. Cependant, vous pouvez utiliser Cmder pour Windows, le terminal par défaut de macOS, le même sous Linux, etc.
  • Accès à vos fichiers spécifiques : Vous voudrez avoir les fichiers de votre projet sur votre ordinateur local, car sans eux, vous ne pourrez rien faire !
  • Connaissance de la ligne de commande : Il est utile d’avoir une certaine connaissance de la ligne de commande – en particulier, les commandes qui vous aideront à naviguer dans vos fichiers, ainsi qu’une certaine compréhension du fonctionnement de la ligne de commande.

En réalité, si vous avez un projet avec un dépôt Git et une fenêtre de terminal de votre choix, c’est tout ce dont vous avez besoin.

Effectuer un « Git Delete » basique

Tout d’abord, nous supposerons que vous souhaitez supprimer une branche avec des modifications fusionnées. C’est la pratique la plus simple et la plus courante.

Cependant, vous pourriez avoir besoin de lancer git branch -a ou git branch --list pour voir toutes les branches et trouver la bonne dans votre dépôt :

Liste des branches dans un dépôt Git local.
Liste des branches dans un dépôt Git local.

Voici la commande dont vous aurez besoin pour supprimer une branche :

git branch -d branch-name

Vous devez utiliser le nom spécifique de la branche plutôt que le nom générique.

Le drapeau -d signifie ici « supprimer », et en minuscules, vous avez une certaine protection contre la suppression d’une branche avec des modifications non fusionnées.

Si vous essayez de supprimer une branche non fusionnée, vous obtiendrez une erreur (en fait, il s’agit plutôt d’un avertissement) :

Essai de suppression d'une branche avec des modifications non fusionnées dans un dépôt Git.
Essai de suppression d’une branche avec des modifications non fusionnées dans un dépôt Git.

Cependant, vous pouvez mettre une majuscule à l’indicateur en utilisant -D et ignorer cet avertissement protecteur. Cela vous permet de supprimer une branche avec des modifications non fusionnées.

Notez que vous n’obtiendrez pas de confirmation pour supprimer la branche si vous utilisez la version en majuscules, c’est donc un indicateur que vous devez utiliser avec précaution.

Quelle est la cause de l’erreur « Cannot Delete Branch » ?

Parce que la suppression d’une branche de votre dépôt est une décision importante sans résolution facile, Git émet des erreurs si vous faites un faux pas.

Par exemple, il vous arrivera de vouloir effectuer un git delete sur une branche locale et de voir apparaître l’erreur « Cannot delete branch » :

Essayer de supprimer une branche dans un dépôt Git, et voir une erreur.
Essayer de supprimer une branche dans un dépôt Git, et voir une erreur.

La raison en est simple : votre position actuelle dans le dépôt Git. Vous ne pouvez pas supprimer une branche que vous avez « sortie »

La solution est de changer de branche.

Pour cette raison, nous vous suggérons toujours d’aller sur la branche main. De cette façon, vous obtiendrez une erreur si vous essayez d’effacer main, et vous pourrez également effacer toute autre branche dans le dépôt.

Comment restaurer une branche Git locale supprimée ?

Étant donné qu’un commit restera après que vous ayez supprimé une branche locale, il y a une petite possibilité de récupérer une branche après avoir effectué un git delete. Cependant, c’est plus compliqué que de fusionner ces changements d’abord. Dans cette situation, vous saurez que vous n’aurez plus besoin de la branche.

Chaque livraison utilise un numéro de hachage, qui sert de référence. Vous pouvez utiliser ce numéro pour extraire et créer une nouvelle branche :

Affichage des versions courte et longue du numéro de référence d'un commit dans Git.
Affichage des versions courte et longue du numéro de référence d’un commit dans Git.

Cependant, si vous ne connaissez pas le hash d’une branche supprimée, vous pouvez utiliser la commande reflog. Ces « journaux de référence » ressemblent beaucoup à ceux que vous trouverez dans des applications telles que DevKinsta.

Bien que l’utilisation de git reflog fasse l’objet d’un tout autre article, vous pouvez utiliser la fonctionnalité de base pour trouver le hachage d’anciens commits. Si vous exécutez git reflog, vous verrez une liste de modifications :

Une fenêtre de terminal exécutant une commande git reflog et affichant les résultats.
Une fenêtre de terminal exécutant une commande git reflog et affichant les résultats.

La première colonne de hachages vous permet d’extraire le commit et de créer une nouvelle branche. Par exemple, la première colonne de hashs vous permet d’extraire le commit et de créer une nouvelle branche :

git checkout 5744ff6
git branch f9d2db5

Cependant, il ne s’agit pas d’une méthode infaillible pour récupérer une branche supprimée dans Git.

Dans certains cas, il n’y aura pas de commit dans le reflog, ni de référence HEAD au commit lui-même. C’est pourquoi il est préférable de travailler avec vos branches de manière plus sûre en fusionnant les changements avant d’effectuer un git delete sur une branche locale.

Travailler avec des branches Git distantes

Lorsque vous effectuez un git delete sur une branche locale, vous aurez souvent un dépôt distant associé. C’est particulièrement vrai si vous descendez votre site sur Kinsta en utilisant Git.

Celle-ci ne sera pas mise à jour en même temps que votre dépôt local lorsque vous y apporterez des modifications, et il en va de même lorsque vous supprimez une branche locale.
Cependant, GitHub et GitLab ont le même processus pour supprimer une branche Git distante. Il s’agit d’une approche similaire à toute autre poussée « upstream »

Voici la commande :

git push remote-name -d remote-branch

Pour remote-name, la plupart des dépôts que nous voyons utilisent « origin » La référence remote-branch sera la même que la branche locale (à moins que vous ne renommiez une branche locale, ce qui dépasse le cadre de cet article)

Par ailleurs, vous pouvez voir toutes les branches – locales et distantes – en utilisant git branch -a. Si vous souhaitez voir uniquement les branches distantes, vous pouvez utiliser git branch -r.

Une fois la commande exécutée, vous verrez un message de confirmation, à la suite duquel vous devrez relancer git branch -a pour vérifier que tout a été supprimé comme prévu.

En résumé

Git est l’un des rares outils qui vous donne un pouvoir immense sous le capot en utilisant des commandes lisibles et intuitives. Cela vaut également pour la suppression des branches dont vous n’avez plus besoin sur votre machine locale. Cependant, vous devrez toujours prendre soin de lancer un git delete sur une branche locale.

En effet, si vous essayez de supprimer des modifications non fusionnées, vous obtiendrez une erreur ou vous supprimerez quelque chose qui aura un impact sur le travail de votre futur projet. De plus, vous devrez également supprimer la branche distante. Vos dépôts locaux et distants ont besoin que vous fassiez un bon ménage afin de maintenir des performances élevées et une taille de fichier minimale.

Bien que vous puissiez être seul si vous supprimez une branche Git par erreur, Kinsta vous soutient en ce qui concerne l’hébergement d’applications. La plateforme d’hébergement Kinsta vous permet de vous connecter à vos dépôts GitHub et de les déployer en quelques minutes. De plus, vous aurez accès aux machines C2 et au réseau Premium Tier de Google, ainsi qu’à notre intégration Cloudflare, pour faire passer vos applications à un niveau supérieur de vitesse et de sécurité.