De la page de manuel:
Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
Alors j'ai enlevé un tas de branches en utilisant
git Push Origin :staleStuff
et ensuite couru
git remote Prune Origin
Cependant, une seule branche locale a été élaguée. Certaines de ces branches ont été créées par moi, d'autres par des collègues. Cela indique-t-il que je ne suivais pas ces branches correctement?
Quand vous utilisez git Push Origin :staleStuff
, il supprime automatiquement Origin/staleStuff
, alors quand vous avez couru git remote Prune Origin
, vous avez élagué une branche qui avait été supprimée par quelqu'un d'autre. Il est plus probable que vos collègues doivent maintenant exécuter git Prune
pour vous débarrasser des branches que vous avez supprimées.
Alors quoi exactement git remote Prune
Est-ce que? Idée principale: les branches locales (et non les branches suivies) ne sont pas touchées par git remote Prune
commande et doit être supprimé manuellement.
Maintenant, un exemple concret pour une meilleure compréhension:
Vous avez un référentiel distant avec 2 branches: master
et feature
. Supposons que vous travaillez sur les deux branches, vous avez donc les références suivantes dans votre référentiel local (les noms de références complets sont donnés pour éviter toute confusion):
refs/heads/master
_ (nom abrégé master
)refs/heads/feature
_ (nom abrégé feature
)refs/remotes/Origin/master
(nom court Origin/master
)refs/remotes/Origin/feature
(nom court Origin/feature
)Maintenant, un scénario typique:
feature
, le fusionne dans master
et supprime la branche feature
du référentiel distant.git fetch
(ou git pull
), aucune référence n’est supprimée de votre référentiel local, vous avez donc encore ces 4 références.git remote Prune Origin
.feature
branche n'existe plus, donc refs/remotes/Origin/feature
est une branche obsolète qui doit être supprimée.refs/heads/feature
, parce que git remote Prune
ne supprime aucun refs/heads/*
références.Il est possible d'identifier les branches locales, associées aux branches de suivi à distance, en branch.<branch_name>.merge
paramètre de configuration. Ce paramètre n’est vraiment pas nécessaire pour que quoi que ce soit fonctionne (probablement sauf git pull
), il est peut-être manquant.
(mis à jour avec l'exemple et les informations utiles tirées des commentaires)