git config --get-regexp "branch\.$current_branch\.remote"
gibt Ihnen den Namen der zu verfolgenden Fernbedienung an
git config --get-regexp "branch\.$current_branch\.merge"
gibt Ihnen den Namen des entfernten Zweigs, der verfolgt wird.
Sie müssen $current_branch durch den Namen Ihres aktuellen Zweigs ersetzen. Sie können das dynamisch mit git rev-parse --abbrev-ref HEAD
Das folgende Mini-Skript kombiniert diese Dinge. Fügen Sie es in eine Datei namens git-tracking
und stellen Sie sicher, dass es sich in Ihrem Pfad befindet.
dann können Sie sagen
$ git tracking
<current_branch_name>-><remote_repo_name>/<remote_branch_name>
Beachten Sie, dass der Name der entfernten Verzweigung sich von dem der lokalen Verzweigung unterscheiden kann (obwohl das normalerweise nicht der Fall ist). Zum Beispiel:
$git tracking
xxx_xls_xslx_thing -> origin/totally_bogus
Wie Sie im Code sehen können, liegt der Schlüssel dazu im Extrahieren der Daten aus der Git-Konfiguration. Ich verwende einfach sed, um die überflüssigen Daten zu entfernen.
#!/bin/sh
current_branch=$(git rev-parse --abbrev-ref HEAD)
remote=$(git config --get-regexp "branch\.$current_branch\.remote" | sed -e "s/^.* //")
remote_branch=$(git config --get-regexp "branch\.$current_branch\.merge" | \
sed -e "s/^.* //" -e "s/refs\/.*\///")
echo "$current_branch -> $remote/$remote_branch"