Comment supprimer une branche dans Git localement et à distance

L'une des fonctionnalités les plus fortes de Git est ses branches légères. Ils vous permettent de travailler efficacement sur des étapes parallèles de développement. Un développeur peut même créer des branches individuelles pour des bogues distincts. Dans le temps et dans l'espace, les succursales sont presque gratuites.

De nombreux workflows git traitent à la fois des branches à long terme et temporaires. Par conséquent, il est souvent nécessaire de supprimer les branches pendant le développement. Il est parfois nécessaire de supprimer les branches partagées, à partir d'un serveur distant, ainsi que les branches locales.

Pourquoi supprimer une branche?

Premièrement, si vous maîtrisez toujours git , il y a de bonnes chances que vous créiez une branche et que vous décidiez ensuite que vous n'en avez pas besoin. Ou vous expérimentez peut-être avec des branches et souhaitez vous éclaircir. C'est très bien car le branchement dans git est une opération légère. C'est très rapide et utilise efficacement l'espace disque.

En conséquence, de nombreux workflows de développement git encouragent le branchement, même pour des tâches très petites ou courtes. Par exemple, une stratégie courante consiste à créer une branche pour une seule correction de bogue. Cela est vrai même s'il ne s'agit que d'un seul auteur effectuant une modification d'une ligne dans un seul fichier.

Pour ces raisons, la création et la suppression de branches sont des opérations qui doivent être bien comprises. Il se peut que vous supprimiez souvent des branches au cours d'un workflow de développement typique.

Un exemple de référentiel avec des branches

Les exemples suivants font référence à un exemple de référentiel avec la structure suivante:

 $ git branch -vv
1 dev 1ae41e8 [origin/dev] first commit
2 * main 1ae41e8 [origin/main] first commit

Notez que chaque branche locale a une branche amont correspondante à partir de l' origine distante.

Suppression d'une branche à l'aide de la ligne de commande

La syntaxe de commande de base pour supprimer une branche est:

 git branch (-d | -D) [-r] <branchname>...

La forme la plus simple de la commande supprime une branche locale, à condition que toutes ses modifications aient été fusionnées:

 $ git branch -d dev

Vous ne pouvez pas supprimer la branche actuellement active; si vous essayez de le faire, vous recevrez un message comme celui-ci:

 error: Cannot delete branch 'main' checked out at '/tmp/sandbox'

Lorsque les choses vont bien, vous verrez un message de confirmation:

 Deleted branch dev (was 1ae41e8).

Si vous supprimez une branche qui n'existe que localement, avec des modifications non fusionnées, vous perdrez ces modifications. Par conséquent, git refusera de supprimer une branche dans une telle situation, par défaut:

 error: The branch 'dev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D dev'.

Comme le message d'erreur l'indique, vous pouvez forcer la suppression avec l'indicateur -D . Cependant, git vous permettra de supprimer une branche locale non fusionnée si elle existe à distance:

 warning: deleting branch 'dev' that has been merged to
'refs/remotes/origin/dev', but not yet merged to HEAD.
Deleted branch dev (was 9a6d20b).

La suppression d'une branche distante est assez différente. Vous utiliserez la commande git push avec l'indicateur -d pour supprimer. Après cela, indiquez le nom de la télécommande (souvent l' origine ) et le nom de la branche:

 $ git push -d origin dev
To github.com:bobbykjack/sandbox.git
- [deleted] dev

Suppression de branches locales et distantes avec GitHub Desktop

Contrairement au programme git en ligne de commande, l'application de bureau de GitHub vous permettra uniquement de supprimer la branche active. Vous pouvez effectuer cette action via le menu Branche , en sélectionnant l'option Supprimer et en la confirmant:

GitHub Desktop ne vous permettra pas de supprimer la branche par défaut – par exemple main – même si git lui-même prend en charge cela. Si la branche par défaut est celle qui est actuellement active, l'application désactive l'action de menu.

Si la branche représente également une branche distante, GitHub Desktop offre également la possibilité de la supprimer de la télécommande:

Suppression de branches à l'aide de GitKraken

GitKraken affiche les branches locales et distantes de votre référentiel dans la barre latérale gauche. Vous devez supprimer chacun séparément .

Survolez le nom de la branche appropriée et cliquez sur le menu Actions de branche qui ressemble à trois points verticaux. Dans le menu, sélectionnez Supprimer <nom de la branche> :

Vous verrez un message de confirmation vous informant qu'il s'agit d'une opération destructrice. Vous pouvez confirmer que vous souhaitez continuer avec le bouton Supprimer :

Reflétant le comportement par défaut du programme de ligne de commande git, vous devez d'abord basculer vers une branche autre que celle que vous supprimez . Sinon, vous verrez un message d'erreur:

Suppression de succursales locales et distantes à l'aide de la tour

La suppression d'une branche avec Tower est très similaire à la suppression d'une branche avec GitKraken. Les branches locales et distantes sont affichées dans un panneau sur le côté gauche. Faites un clic droit sur n'importe quelle branche et sélectionnez l'option Supprimer dans le menu contextuel:

Une différence clé est qu'une branche distante peut être supprimée avec sa branche locale, lors de la confirmation:

Supprimer une branche sur GitHub

GitHub agit uniquement comme une source distante, donc les branches là-bas sont distantes par défaut. Si vous supprimez une branche à l'aide du site Web GitHub, vous devrez supprimer la branche locale correspondante en utilisant l'une des autres méthodes ici.

Comme pour l'application GitHub Desktop, le site Web GitHub ne vous permettra pas de supprimer la branche par défaut. L'option n'apparaît tout simplement pas. Cependant, la suppression d'une branche est simple. Dans la page Code du référentiel, cliquez sur le lien branches , localisez la branche à supprimer, puis cliquez sur l'icône Supprimer cette branche , qui ressemble à une poubelle:

Sachez qu'il n'y a pas de vérification des modifications non fusionnées, donc sur GitHub, la branche sera simplement supprimée immédiatement. Cependant, comme il représentera toujours une branche distante, cela devrait être le comportement que vous attendez.

Notez qu'après la suppression, vous verrez un bouton pour restaurer la branche. Cependant, il s'agit simplement d'une fonction d'annulation utile, au cas où vous cliqueriez accidentellement sur l'icône de suppression. Ne vous y fiez pas, car dès que vous actualisez ou quittez la page, vous perdrez l'option!

Suppression des branches locales et distantes sur Bitbucket

Bitbucket, comme GitHub, ne vous permettra pas de supprimer la branche par défaut. Bitbucket appelle cela la branche principale dans les paramètres du référentiel . Vous pouvez supprimer toute autre branche répertoriée dans l'onglet Branches , via son menu Actions correspondant:

Vous pouvez également supprimer plusieurs branches à la fois si vous effectuez une opération de nettoyage importante:

La suppression de branches fait partie d'un flux de travail Git typique

Les branches Git peuvent compliquer votre flux de travail, en particulier une avec des branches locales, distantes et de suivi. Mais pour un développement simple au jour le jour, vous êtes susceptible de créer et de supprimer des succursales locales tout le temps. C'est un aspect essentiel d'un workflow git typique auquel vous devriez vous habituer.