
joachim
Ich weiß, dass ich es kann git branch --all
und das zeigt mir sowohl lokale als auch Remote-Zweige, aber es ist nicht so nützlich, um mir die Beziehungen zwischen ihnen zu zeigen.
Wie liste ich Verzweigungen so auf, dass angezeigt wird, welche lokale Verzweigung welche Remote verfolgt?

Cascabel
Sehr viel ein Porzellanbefehl, nicht gut, wenn Sie dies zum Skripten wollen:
git branch -vv # doubly verbose!
Beachten Sie, dass mit Git 1.8.3 dieser Upstream-Zweig in angezeigt wird Blau (siehe “Was ist diese Verzweigungsverfolgung (wenn überhaupt) in Git?”)
Wenn Sie eine saubere Ausgabe wünschen, lesen Sie die Antwort von arcresu – sie verwendet einen Porzellanbefehl, von dem ich glaube, dass er zu der Zeit, als ich diese Antwort ursprünglich geschrieben habe, nicht existierte, also ist er etwas prägnanter und funktioniert mit Zweigen, die für Rebase konfiguriert sind, nicht nur für das Zusammenführen.
git remote show origin
Ersetzen Sie ‘origin’ durch den Namen Ihrer Fernbedienung.

Karl Suster
Wenn Sie sich die Manpage für git-rev-parse
sehen Sie, dass die folgende Syntax beschrieben wird:
<branchname>@{upstream}
z.B [email protected]{upstream}
, @{u}
Das Suffix @{upstream}
zu einem Zweignamen (Kurzform
<branchname>@{u}
) bezieht sich auf die Verzweigung, auf der die durch Verzweigungsname angegebene Verzweigung aufgebaut werden soll. Ein fehlender Branchname wird standardmäßig auf den aktuellen gesetzt.
Daher den stromaufwärts der Verzweigung zu finden master
Du würdest:
git rev-parse --abbrev-ref [email protected]{upstream}
# => origin/master
Um die Informationen für jeden Zweig auszudrucken, könnten Sie Folgendes tun:
while read branch; do
upstream=$(git rev-parse --abbrev-ref [email protected]{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 Analysieren von Refs und Konfigurationen.

Abizern
Eine Alternative zu kubis Antwort ist ein Blick auf die .git/config
Datei, die die lokale Repository-Konfiguration zeigt:
cat .git/config
git for-each-ref --format="%(refname:short) <- %(upstream:short)" refs/heads
zeigt eine Linie für jede lokale Niederlassung. Ein Tracking-Zweig sieht folgendermaßen aus:
master <- origin/master
Ein Non-Tracking sieht so aus:
test <-

Gemeinschaft
Für die Strom Filiale, hier sind zwei gute Möglichkeiten:
% git rev-parse --abbrev-ref --symbolic-full-name @{u}
origin/mainline
oder
% git for-each-ref --format="%(upstream:short)" $(git symbolic-ref -q HEAD)
origin/mainline
Diese Antwort ist auch hier auf eine etwas andere Frage, die (fälschlicherweise) als Duplikat markiert wurde.

Eugen Yarmash
Für den Stromzweig könnte man auch sagen git checkout
(ohne Zweig). Dies ist eine No-Op mit Nebeneffekten, um die Tracking-Informationen, falls vorhanden, für den aktuellen Zweig anzuzeigen.
$ git checkout
Your branch is up-to-date with 'origin/master'.
9631600cookie-checkWie kann ich sehen, welche Git-Zweige welchen Remote-/Upstream-Zweig verfolgen?yes