1275 Stimmen

Herausfinden, welche entfernte Zweigstelle von einer lokalen Zweigstelle verfolgt wird

Siehe auch:
Wie kann ich sehen, welche Git-Zweige welchen Remote- / Upstream-Zweig verfolgen?

Wie kann ich herausfinden, welche entfernte Zweigstelle von einer lokalen Zweigstelle verfolgt wird?

Muss ich die Daten von git config Ausgabe, oder gibt es einen Befehl, der dies für mich erledigen würde?

1435voto

jdsumsion Punkte 12936

Hier ist ein Befehl, der Ihnen alle Tracking-Zweige (konfiguriert für 'pull') liefert, siehe:

$ git branch -vv
  main   aaf02f0 [main/master: ahead 25] Some other commit
* master add0a03 [jdsumsion/master] Some commit

Man muss sich durch die SHA und alle langatmigen Commit-Meldungen wühlen, aber es ist schnell getippt und ich bekomme die Tracking-Zweige vertikal in der dritten Spalte ausgerichtet.

Wenn Sie Informationen über die 'pull'- und 'push'-Konfiguration pro Zweig benötigen, lesen Sie die andere Antwort auf git remote show origin .


Update

Ab der Git-Version 1.8.5 können Sie den Upstream-Zweig mit git status y git status -sb

509voto

cdunn2001 Punkte 16591

Zwei Möglichkeiten:

% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline

ou

% git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"
origin/mainline

252voto

Ajit George Punkte 3169

Ich glaube git branch -av sagt Ihnen nur, welche Zweige Sie haben und auf welchem Commit sie sich befinden, und Sie müssen daraus schließen, welche entfernten Zweige die lokalen Zweige verfolgen.

git remote show origin sagt Ihnen ausdrücklich, welche Zweige welche entfernten Zweige verfolgen. Hier ein Beispiel für die Ausgabe eines Repositorys mit einer einzigen Übergabe und einem entfernten Zweig namens abranch :

$ git branch -av
* abranch                d875bf4 initial commit
  master                 d875bf4 initial commit
  remotes/origin/HEAD    -> origin/master
  remotes/origin/abranch d875bf4 initial commit
  remotes/origin/master  d875bf4 initial commit

gegen

$ git remote show origin
* remote origin
  Fetch URL: /home/ageorge/tmp/d/../exrepo/
  Push  URL: /home/ageorge/tmp/d/../exrepo/
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    abranch
    master
  Remote branches:
    abranch tracked
    master  tracked
  Local branches configured for 'git pull':
    abranch merges with remote abranch
    master  merges with remote master
  Local refs configured for 'git push':
    abranch pushes to abranch (up to date)
    master  pushes to master  (up to date)

101voto

Aaron Wells Punkte 1025

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

66voto

nikkypx Punkte 1720

Die örtlichen Zweigstellen und ihre Außenstellen.

git branch -vv 

Alle Zweigstellen und die Verfolgung von Fernbedienungen.

git branch -a -vv

Sehen Sie, wo die lokalen Zweige explizit für Push und Pull konfiguriert sind.

git remote show {remote_name}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X