Comment supprimer des branches Git sur des référentiels locaux et distants - CloudSavvy IT
Agence web » Actualités du digital » Comment supprimer des branches Git sur des référentiels locaux et distants

Comment supprimer des branches Git sur des référentiels locaux et distants

Les branches sont une partie essentielle des workflows Git, utilisées pour garder le code inachevé hors de la base de code principale. Cependant, si vous travaillez beaucoup avec eux, vous pouvez avoir un tas de références de branches inutilisées dans votre liste de branches qui doivent être supprimées.

Pourquoi supprimer des succursales ?

Il est important de comprendre comment fonctionnent les branches avant de les supprimer. Tout d’abord, vous ne supprimez pas vraiment de code, vous supprimez le référence de la branche, ce qui peut encore entraîner une perte de données dans certains cas, mais pour la plupart des flux de travail est totalement inoffensif.

Vous pouvez considérer les commits Git comme une chaîne pointant vers l’arrière, construisant votre historique Git jusqu’au début du dépôt (il est techniquement stocké sous forme de blobs et d’arbres compliqués en interne, mais cette analogie fonctionne dans la plupart des cas).

Les branches caractéristiques sont des fourches dans cette chaîne, créant deux histoires divergentes. Lorsque vous créez un commit sur une nouvelle branche, une référence de branche est créée et définie pour pointer vers ce commit. Les commits de fusion les rassemblent et déplacent également le feature l’étiquette doit être conforme master.

À ce point, feature et master font tous les deux la même chose. Vous pouvez supprimer le feature référence et aucun code n’est perdu. Si vous n’avez pas l’intention de réutiliser cette branche, il est recommandé de simplement la supprimer.

Cependant, cela peut entraîner une perte de données si la référence de branche pointe vers des commits qui n’ont pas été fusionnés dans le master chronologie (ou une autre branche). Git reconnaîtra que ces commits ne sont plus nécessaires, car il n’y a pas de référence de branche active qui les inclut, et les nettoie lorsqu’il effectue le ramasse-miettes.

Vous pouvez également choisir de ne pas supprimer les branches. Cependant, la référence de branche ne se déplacera pas avec master, qui continuera à avancer. Si vous effectuez un nouveau commit dans la branche de fonctionnalité, cela créera une « nouvelle branche » dans l’historique, qui peut être fusionnée, mais peut être gravement obsolète.

Pour cette raison, à moins que vous ne fusionniez constamment deux branches, il est préférable de supprimer les branches de fonctionnalité après leur fusion pour effacer votre historique.

Supprimer la branche locale

Git ne vous permettra pas de supprimer la branche sur laquelle se trouve HEAD, vous devrez donc rétablir votre branche de travail master. À moins, bien sûr, que vous vouliez supprimer master pour certaines raisons.

git checkout master

Ensuite, vous pouvez utiliser git branch avec le -d flag pour supprimer une branche :

git branch -d branch_name

En raison de la façon dont Git gère les branches, cette commande peut échouer dans certaines circonstances. Git garde en fait trois branches pour chaque « branche » : la branche locale, la branche distante et une branche de suivi à distance généralement nommée origin/branchname.

Les -d flag ne supprimera que les branches qui ont été poussées et fusionnées dans la branche de suivi distant. C’est généralement ce que vous voudriez pour les opérations normales, mais si vous voulez le supprimer de force, vous pouvez exécuter à nouveau la même commande avec une majuscule -D drapeau:

git branch -D branch_name

Gardez à l’esprit que ce entraînera une perte de données si les commits ne sont pas fusionnés.

Supprimer la branche distante

La suppression de branches sur la télécommande est également facile. Pour supprimer des branches distantes, exécutez git push avec le -d flag, ce qui entraînera la suppression de la branche si vous y avez accès.

git push origin -d branch_name

Selon votre fournisseur Git, comme Github ou Bitbucket, vous devrez peut-être activer la suppression de branche dans les paramètres en ligne, et il peut y avoir des outils pour gérer la suppression à la place.

Cependant, cela n’enverra pas les modifications aux machines clientes jusqu’à ce qu’elles s’exécutent git fetch avec le --prune flag, qui nettoiera les vieilles branches :

git fetch --all --prune

Suppression automatique des branches de demande d’extraction Github

Github a en fait une fonctionnalité intéressante pour que les référentiels nettoient automatiquement les branches créées à partir de demandes d’extraction. Vous pouvez l’activer dans les paramètres, sous Options > Bouton de fusion :

★★★★★