Pour vérifier si une branche Git locale peut être supprimée en toute sécurité sur macOS, inspectez votre copie de travail, comparez les commits de la branche avec celle que vous souhaitez conserver et vérifiez si elle est utilisée dans un autre arbre de travail (worktree). Ouvrez Terminal, placez-vous dans le dépôt et servez-vous de la vérification de branche fusionnée de Git comme indice — et non comme garantie que la branche n'a plus aucune valeur. En cas de doute, conservez la branche jusqu'à ce que vous confirmiez que son travail est préservé.

1. Ouvrez le dépôt et vérifiez s'il y a des modifications non enregistrées

Ouvrez Terminal depuis Applications > Utilitaires, ou utilisez Spotlight pour le trouver. Apple documente zsh comme shell par défaut de Terminal, et les commandes ci-dessous fonctionnent dans la configuration standard de macOS. Dans Terminal, déplacez-vous dans le répertoire du dépôt ; entourez le chemin de guillemets s'il contient des espaces :

cd "/path/to/your/repository"
git status --short --branch

La sortie du statut indique la branche extraite (checked-out) et si des fichiers ont été modifiés. Committez ou préservez d'une autre manière les modifications de fichiers souhaitées avant de changer de branche. Cette vérification est distincte de l'historique de la branche : une copie de travail propre ne signifie pas que les commits de la branche ont été fusionnés. De même, les modifications non validées ne sont pas protégées simplement parce que vous supprimez une branche avec l'option de suppression sécurisée standard de Git.

2. Vérifiez si la branche est fusionnée dans la bonne cible

Identifiez d'abord la branche que vous avez l'intention de conserver, généralement main ou develop. Si vous êtes actuellement sur la branche candidate, basculez vers la branche cible avant de supprimer quoi que ce soit. Remplacez feature/example et main ci-dessous par vos véritables noms de branches :

git switch main
git branch --merged main
git branch --no-merged main

La première liste contient les branches locales dont les pointes sont accessibles depuis main ; la seconde liste les branches dont les pointes ne le sont pas. Git décrit git branch --merged comme listant les branches fusionnées dans le commit spécifié (ou HEAD si aucun n'est fourni). Il s'agit d'un test de l'historique des commits, il n'est donc utile que lorsque main est la branche qui doit contenir le travail. Une branche fusionnée dans une autre branche de livraison (release) ou d'intégration peut toujours apparaître comme non fusionnée par rapport à main. Documentation Git branch

Si la candidate apparaît dans --merged main, cela indique fortement que ses commits sont déjà accessibles depuis main. Confirmez que la fonctionnalité ou le correctif est présent là où vous l'attendez, en particulier si votre équipe utilise des pull requests, des branches de livraison ou une cible de fusion différente. Si elle apparaît sous --no-merged, ne la supprimez pas avant d'avoir inspecté les commits qui lui sont propres.

3. Inspectez les commits et le suivi amont

Pour comparer une candidate avec la cible, utilisez :

git log --oneline main..feature/example

Cette commande affiche les commits accessibles depuis feature/example qui ne sont pas accessibles depuis main. Si elle liste des commits, inspectez-les et décidez s'ils doivent être fusionnés, récupérés via cherry-pick ou conservés. Un résultat vide signifie que la candidate n'a aucun commit de plus que main dans cette comparaison ; cela ne prouve pas que le nom de la branche ou sa raison d'être ne sont plus nécessaires.

Une branche peut également suivre une branche distante. Vérifiez ses informations de suivi avec :

git branch -vv

Une branche amont (upstream) est une référence configurée utilisée par Git pour des opérations telles que pull et push. Une référence amont manquante ou disparue ne prouve pas que la branche locale peut être retirée en toute sécurité : ses commits peuvent toujours être uniques. De plus, une référence de suivi distant peut être obsolète tant que vous n'avez pas exécuté fetch. Si vous souhaitez actualiser les données de suivi distant, git fetch --prune origin récupère les données d'origin et supprime les références de suivi distant obsolètes selon le refspec de ce distant ; cette commande ne supprime pas votre branche locale. Documentation Git fetch

4. Vérifiez les arbres de travail, puis supprimez en toute sécurité

Une branche peut être extraite dans un autre arbre de travail lié (worktree). Git refuse de supprimer une branche qui est actuellement extraite. Si la suppression est refusée, vérifiez git worktree list et inspectez les répertoires listés avant d'aller plus loin. Vérifiez également que la candidate n'est pas votre branche actuelle ; basculez d'abord vers la cible prévue. Documentation Git branch

Lorsque vous avez confirmé que le travail est préservé et que la branche n'est plus nécessaire, supprimez-la en utilisant l'option sécurisée de Git :

git branch -d feature/example

Git n'autorise -d que lorsque la branche est entièrement fusionnée dans son amont configuré, ou dans HEAD si aucun amont n'est configuré. Si Git refuse, considérez cela comme un signal pour mener l'enquête. L'option -D force la suppression quel que soit le statut de fusion ; elle contourne cette sécurité et ne devrait pas être utilisée comme un contournement systématique. Documentation Git branch

Prendre une décision prudente est simple : ne supprimez avec -d qu'après vous être assuré que le travail de la candidate est présent dans la destination prévue, que les commits uniques ont été examinés et qu'aucun arbre de travail n'utilise encore la branche. Si l'un de ces points n'est pas clair, conservez la branche et clarifiez d'abord sa destination.

Sources