Aktualisierung: Nun, es ist schon einige Jahre her, dass ich dies veröffentlicht habe! Für meinen speziellen Zweck, HEAD mit Upstream zu vergleichen, verwende ich jetzt @{u}
ist eine Abkürzung, die auf den HEAD des Upstream-Tracking-Zweigs verweist. (Siehe https://git-scm.com/docs/gitrevisions#gitrevisions-emltbranchnamegtupstreamemegemmasterupstreamememuem ).
Ursprüngliche Antwort: Dieses Problem ist mir auch schon begegnet. Ich verwende oft mehrere Remotes in einem einzigen Repository, und es ist leicht zu vergessen, gegen welche der aktuelle Zweig verfolgt wird. Und manchmal ist es praktisch, das zu wissen, z.B. wenn man sich seine lokalen Commits über git log remotename/branchname..HEAD
.
All diese Informationen werden in den Git-Config-Variablen gespeichert, aber Sie müssen die Git-Config-Ausgabe nicht parsen. Wenn Sie git config gefolgt vom Namen einer Variable aufrufen, wird einfach der Wert dieser Variable ausgegeben, ohne dass eine Analyse erforderlich ist. In diesem Sinne finden Sie hier einige Befehle, mit denen Sie Informationen über die Einstellungen für die Verfolgung Ihres aktuellen Zweigs erhalten:
LOCAL_BRANCH=`git name-rev --name-only HEAD`
TRACKING_BRANCH=`git config branch.$LOCAL_BRANCH.merge`
TRACKING_REMOTE=`git config branch.$LOCAL_BRANCH.remote`
REMOTE_URL=`git config remote.$TRACKING_REMOTE.url`
In meinem Fall, da ich nur den Namen meiner aktuellen Fernbedienung herausfinden möchte, mache ich dies:
git config branch.`git name-rev --name-only HEAD`.remote