Si des branches supprimées apparaissent toujours dans Git sur votre Mac, nettoyez les références distantes de votre dépôt local. Ouvrez le Terminal, accédez au dossier du dépôt, vérifiez quel dépôt distant vous souhaitez actualiser, puis exécutez git fetch --prune origin. Cela met à jour les références récupérées et supprime celles qui sont obsolètes associées à origin ; cela ne supprime pas les branches du serveur distant ni vos branches locales. Documentation de git fetch par Git

Qu’est-ce qui est actualisé lors d’un élagage (prune) ?

Une branche distante (remote-tracking branch) est votre enregistrement local d’une branche située sur un dépôt distant. Par exemple, origin/feature-x représente le dernier état récupéré de la branche distante. Elle est distincte d’une branche locale nommée feature-x. Si la branche distante est supprimée, votre référence locale peut subsister jusqu’à ce que Git l’élague. Le mappage de récupération par défaut de Git stocke généralement les branches distantes sous refs/remotes/origin/, bien qu’un dépôt puisse utiliser un mappage différent. Git explique comment les refspecs de récupération configurés mappent les branches distantes.

L’élagage (pruning) compare les références actuelles du dépôt distant avec les références locales couvertes par la configuration de récupération de ce distant, puis supprime les références qui n’existent plus à distance. Cela nettoie votre vue locale ; il ne s’agit pas d’une commande permettant de supprimer des branches distantes. Cela peut rendre les commandes telles que git branch --all plus faciles à lire lorsqu’un dépôt a accumulé d’anciennes références de branches. Conseils de Git sur l’élagage

Actualiser les références depuis le Terminal

Apple indique que zsh est le shell par défaut dans Terminal sur Mac, bien qu’un Mac ou un environnement géré puisse être configuré différemment. Les commandes Git ci-dessous fonctionnent dans la configuration habituelle du Terminal macOS. Guide de l’utilisateur de Terminal par Apple

  1. Ouvrez Terminal et accédez au dossier du dépôt. Si vous connaissez son chemin, mettez-le entre guillemets lorsqu’il contient des espaces, par exemple :
cd "/Users/sam/Projects/Client App"

Remplacez le chemin d’exemple par le chemin réel de votre dépôt. Si vous n’êtes pas sûr de l’endroit où vous vous trouvez, pwd affiche le répertoire actuel. Exécutez les commandes Git depuis l’intérieur du dépôt.

  1. Vérifiez le dépôt et le nom du distant :
git status --short --branch
git remote -v

git remote -v liste les noms et URLs des distants configurés. origin est courant, mais utilisez le nom affiché pour le serveur dont vous souhaitez actualiser les références. Si le dépôt possède plusieurs distants, n’élaguez que celui souhaité.

  1. Prévisualisez les références obsolètes avant de les supprimer :
git remote prune --dry-run origin

Git signale les références qu’il élaguerait sans les supprimer. L’option dry-run appartient à git remote prune ; elle ne récupère pas les nouvelles têtes de branche. Documentation de git remote par Git

  1. Si l’aperçu correspond à ce que vous attendez, actualisez et élaguez en une seule étape :
git fetch --prune origin

Cela récupère les données selon le refspec configuré pour le distant et supprime les références obsolètes couvertes par ce mappage. La sortie de fetch de Git signale une référence élaguée par -. Pour élaguer sans récupérer les mises à jour, utilisez plutôt git remote prune origin. Git documente ces deux méthodes ponctuelles.

  1. Vérifiez le résultat :
git branch --remotes
git branch --all

La liste des distants seuls affiche les branches de suivi à distance ; la liste de toutes les branches comprend à la fois les branches distantes et locales. Une branche absente de la liste distante peut toujours exister en tant que branche locale, et l’élagage ne la supprime pas.

Si la référence obsolète persiste

Vérifiez d’abord que vous avez utilisé le bon nom de distant. Examinez ensuite la configuration de récupération (fetch) du dépôt : les distants peuvent être configurés pour ne suivre que certaines branches sélectionnées, et des refspecs personnalisés modifient les références sur lesquelles agissent fetch et prune. Inspectez le mappage avec git config --get-all remote.origin.fetch, en remplaçant origin si nécessaire. Si le distant est configuré pour ne suivre qu’un sous-ensemble, les branches situées en dehors de ce sous-ensemble peuvent ne pas se comporter comme prévu lors d’un fetch par défaut. Git explique les refspecs de récupération et leur effet sur l’élagage.

Si la commande signale une erreur de réseau ou d’authentification, Git n’a pas pu terminer la récupération distante ; résolvez le problème de connexion ou d’accès et réessayez. Évitez d’ajouter --prune-tags à moins que vous ne souhaitiez expressément que l’élagage s’applique également aux étiquettes (tags) : Git avertit que des refspecs explicites de tags peuvent entraîner la suppression de tags locaux absents de ce distant. La documentation de Git sur l’élagage détaille cette mise en garde concernant les tags.

Utilisez git fetch --prune origin lorsque vous souhaitez obtenir à la fois les informations de suivi à distance actuelles et le nettoyage. Utilisez d’abord git remote prune --dry-run origin lorsque vous souhaitez passer en revue les éléments concernés, ou git remote prune origin lorsque vous souhaitez un nettoyage sans récupérer les mises à jour des branches.

Sources