Wenn Sie sich die Manpage für git-rev-parse
finden Sie die folgende Syntax beschrieben:
<branchname>@{upstream}
z.B. master@{upstream}
, @{u}
Das Suffix @{upstream}
t <branchname>@{u}
) bezieht sich auf den Zweig, der branchname angegebene Zweig als Grundlage für die Erstellung verwendet wird. Ein fehlender branchname setzt den Standardwert auf den aktuellen Zweig.
Um den Stromaufwärtsfluss der Verzweigung zu finden, muss man also master
würden Sie tun:
git rev-parse --abbrev-ref master@{upstream}
# => origin/master
Um die Informationen für jeden Zweig auszudrucken, könnten Sie etwa so vorgehen:
while read branch; do
upstream=$(git rev-parse --abbrev-ref $branch@{upstream} 2>/dev/null)
if [[ $? == 0 ]]; then
echo $branch tracks $upstream
else
echo $branch has no upstream configured
fi
done < <(git for-each-ref --format='%(refname:short)' refs/heads/*)
# Output:
# master tracks origin/master
# ...
Dies ist sauberer als das manuelle Parsen von Refs und Config.