Jedes Mal, wenn Sie mit einem Satz von Referenzen arbeiten möchten, ist der korrekte (scriptfähige) Plumbing-Befehl wahrscheinlich git for-each-ref
.
In diesem Fall zum Beispiel:
$ git for-each-ref --format '%(refname)' refs/remotes |
> while read ref; do
> if git symbolic-ref -q $ref > /dev/null; then
> echo sym $ref
> else
> echo reg $ref
> fi
> done
sym refs/remotes/origin/HEAD
reg refs/remotes/origin/maint
reg refs/remotes/origin/master
reg refs/remotes/origin/next
reg refs/remotes/origin/pu
reg refs/remotes/origin/todo
die symbolischen Referenzen vollständig zu überspringen, können Sie die if/then ändern Klausel if ! git symbolic-ref -q $ref > /dev/null; then
(und legen Sie die else
vollständig). Um etwas Interessantes mit den symbolischen Referenzen und ihren Zielen zu tun, speichern Sie die Ausgabe von git symbolic-ref
in einer Variablen, anstatt sie an /dev/null
umzuleiten (aber behalten Sie die -q
, um zu verhindern, dass sie für alle nicht symbolischen Referenzen an stderr klagt).
Mit dem Befehl for-each-ref
können Sie mit jeder sinnvollen Teilmenge von Referenzen arbeiten, einschließlich bestimmter Fernbedienungen oder aller lokalen Verzweigungen().
'git branch -l -r | grep -v - '->''? – Leon
sicher, aber dieser Hack ist sehr unzuverlässig. Wie man alle "Ausnahmen" kennt ... –
Nur eine Idee: Haben Sie den .git-Ordner überprüft? Vielleicht finden Sie nützliche Dateien mit Informationen über Referenzen. Kapitel 10 könnte nützlich sein: https://git-scm.com/book/en/v2 – clinical