On dirait que c'est toujours un problème sans solution appropriée. Je n'ai pas assez de crédits pour commenter, alors voici ma petite contribution.
La première solution de Seth Robertson a un peu fonctionné pour moi, mais ne m'a donné que des branches locales, parmi lesquelles de nombreux faux positifs, probablement à cause de fusions de la branche stable.
La deuxième solution d'Adam Dymitruk n'a pas du tout fonctionné pour moi. Pour commencer, qu'est-ce que --format =% 5? Il n'est pas reconnu par git, je n'ai rien trouvé à ce sujet et je n'ai pas pu 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 avérée utile:
git log --all --source -- <filename> | grep -o "refs/.*" | sort -u
Cela me donne un certain nombre de balises et de branches distantes et une branche locale, où j'ai apporté les dernières modifications au fichier. Je ne sais pas à quel point c'est complet.
MISE À JOUR selon la demande de @nealmcb, en triant les branches par modification la plus récente:
Tout d'abord, vous pouvez changer le grep en "refs / heads /.*", ce qui vous donnera uniquement les branches locales. S'il n'y a que quelques branches, vous pouvez examiner le dernier commit de chacune comme ceci:
git log -1 <branch> -- <filename>
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 git log et un autre tri dans ce one-liner:
git log --all --source -- <filename> | grep -o "refs/heads/.*" | sort -u | xargs -I '{}' git log -1 --format=%aI%x20%S '{}' -- <filename> | sort -r
Cela se traduira par une sortie comme celle-ci:
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