Es sieht so aus, als wäre dies immer noch ein Problem ohne eine geeignete Lösung. Ich habe nicht genug Credits, um einen Kommentar abzugeben. Hier ist mein kleiner Beitrag.
Seth Robertsons erste Lösung funktionierte irgendwie für mich, gab mir aber nur lokale Zweige, unter denen sich viele falsch positive Ergebnisse befanden, wahrscheinlich aufgrund von Zusammenschlüssen aus dem stabilen Zweig.
Die zweite Lösung von Adam Dymitruk hat bei mir überhaupt nicht funktioniert. Was ist --format =% 5 für den Anfang? Es wird von git nicht erkannt, ich konnte nichts darüber finden und ich konnte es nicht dazu bringen, mit anderen Formatoptionen zu arbeiten.
Aber seine erste Lösung in Kombination mit der Option --source und einem einfachen grep erwies sich als hilfreich:
git log --all --source -- <filename> | grep -o "refs/.*" | sort -u
Dies gibt mir eine Reihe von Remote-Tags und -Zweigen sowie einen lokalen Zweig, in dem ich die letzten Änderungen an der Datei vorgenommen habe. Ich bin mir nicht sicher, wie vollständig dies ist.
UPDATE gemäß der Anfrage von @nealmcb, Sortieren der Zweige nach der letzten Änderung:
Zunächst können Sie den Grep in "refs / Heads /.*" ändern, wodurch nur die lokalen Zweige angezeigt werden. Wenn es nur wenige Zweige gibt, können Sie das letzte Commit jedes einzelnen wie folgt untersuchen:
git log -1 <branch> -- <filename>
Wenn es mehr Zweige gibt und Sie dies wirklich automatisieren möchten, können Sie die beiden Befehle mithilfe von xargs, Git-Protokollformatierung und einer anderen Sortierung in diesem Einzeiler kombinieren:
git log --all --source -- <filename> | grep -o "refs/heads/.*" | sort -u | xargs -I '{}' git log -1 --format=%aI%x20%S '{}' -- <filename> | sort -r
Dies führt zu einer Ausgabe wie folgt:
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