Il semble que ce soit toujours un problème sans solution appropriée. Je n'ai pas assez de crédits pour commenter, alors voici ma petite contribution.
La 1ère solution de Seth Robertson a plutôt bien fonctionné pour moi, mais ne m'a donné que des branches locales, parmi lesquelles figuraient de nombreux faux positifs, probablement en raison des fusions de la branche stable.
La 2ème solution d'Adam Dymitruk n'a pas du tout fonctionné pour moi. Tout d'abord, qu'est-ce que --format=%5 ? Ce n'est pas reconnu par git, je n'ai rien trouvé à ce sujet et je n'ai pas réussi à le faire fonctionner avec d'autres options de format.
Mais sa 1ère solution combinée avec l'option --source et avec un simple grep s'est révélée utile :
git log --all --source -- | grep -o "refs/.*" | sort -u
Cela me donne un certain nombre de tags et branches distants et une branche locale, où j'ai apporté les dernières modifications au fichier. Je ne suis pas sûr de la complétude de cette méthode.
MISE À JOUR comme demandé par @nealmcb, tri des branches par changement le plus récent :
Tout d'abord, vous pourriez changer le grep en "refs/heads/.*", ce qui vous donnera uniquement les branches locales. S'il n'y a que quelques branches, vous pourriez examiner le dernier commit de chacune de cette façon :
git log -1 --
S'il y a plus de branches et que vous voulez vraiment automatiser cela, vous pouvez combiner les deux commandes en utilisant xargs, le formatage du git log et un autre tri dans cette commande en une ligne :
git log --all --source -- | grep -o "refs/heads/.*" | sort -u | xargs -I '{}' git log -1 --format=%aI%x20%S '{}' -- | sort -r
Cela donnera un résultat de la forme :
2020-05-07T15:10:59+02:00 refs/heads/branch1
2020-05-05T16:11:52+02:00 refs/heads/branch3
2020-03-27T11:45:48+00:00 refs/heads/branch2