1053 Stimmen

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

Ich weiß, dass ich es kann git branch --all und das zeigt mir sowohl die lokalen als auch die entfernten Zweige, aber es ist nicht sehr nützlich, um mir die Beziehungen zwischen ihnen zu zeigen.

Wie kann ich Zweige so auflisten, dass ersichtlich ist, welcher lokale Zweig welchen entfernten Zweig verfolgt?

1488voto

Cascabel Punkte 449595

Sehr viel ein Porzellan-Befehl, nicht gut, wenn Sie dies für Skripting wollen:

git branch -vv   # doubly verbose!

Beachten Sie, dass mit git 1.8.3 der Upstream-Zweig in blau (siehe " Was ist diese Zweigverfolgung (wenn überhaupt) in Git? ")


Wenn Sie eine saubere Ausgabe wünschen, siehe Die Antwort von Carl Suster - es verwendet einen Porzellan-Befehl, der, glaube ich, nicht existierte, als ich diese Antwort ursprünglich schrieb, also ist es ein bisschen prägnanter und funktioniert mit Zweigen, die für Rebase konfiguriert sind, nicht nur für Merge.

352voto

kubi Punkte 46128

git remote show origin

Ersetzen Sie 'origin' durch den Namen Ihrer Fernbedienung.

153voto

Carl Suster Punkte 5566

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.

95voto

Abizern Punkte 137651

Eine Alternative zur Antwort von kubi ist ein Blick auf die .git/config Datei, die die Konfiguration des lokalen Repositorys zeigt:

cat .git/config

60voto

Aurelien Punkte 1622
git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads

zeigt eine Zeile für jeden lokalen Zweig an. Ein Verfolgungszweig sieht dann so aus:

master <- origin/master

Eine nicht verfolgbare Version sieht so aus:

test <-

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