Sehr viel ein Porzellan-Befehl, nicht gut, wenn Sie dies für Skripte wollen:
git branch -vv # doubly verbose!
Beachten Sie, dass mit Git 1.8.3 dieser Upstream-Zweig blau angezeigt wird (siehe " Was ist diese Zweigverfolgung (wenn überhaupt) in Git? ").
Wenn Sie eine saubere Ausgabe wünschen, lesen Sie die Antwort von arcresu - es wird ein Porzellanbefehl verwendet, von dem ich nicht glaube, dass er zu dem Zeitpunkt existiert hat, als ich diese Antwort ursprünglich geschrieben habe. Daher ist er etwas präziser und funktioniert mit Zweigen, die für die Neubasis konfiguriert sind, und nicht nur für das Zusammenführen.
git remote show origin
Ersetzen Sie "Ursprung" durch den Namen Ihrer Fernbedienung.
quelle
git remote show
Befehl tatsächlich eine Verbindung zum Remote-Repo herstellt ... und daher schlägt es fehl, wenn Siegit remote show -n origin
Sie einige Informationen auch offline abrufen . Aus der git remote-Dokumentation : "Mit der Option -n werden die Remote-Köpfe nicht zuerst mit git ls-remote <Name> abgefragt. Stattdessen werden zwischengespeicherte Informationen verwendet."git remote show | xargs git remote show -n
kombinierten Tracking-Informationen für alle Fernbedienungen anzeigen.Wenn Sie sich die Manpage ansehen
git-rev-parse
, sehen Sie, dass die folgende Syntax beschrieben wird:Um den Upstream der Niederlassung zu finden
master
, würden Sie also Folgendes tun:Um die Informationen für jeden Zweig auszudrucken, können Sie Folgendes tun:
Dies ist sauberer als das manuelle Parsen von Refs und Konfigurationen.
quelle
done < <(git for-each-ref --format='%(refname:short)' refs/heads/**)
Beachten Sie die beiden Sternchen am Ende des Glob-Musters.git rev-parse --abbrev-ref HEAD@{upstream}
scheint für die aktuelle Branche gut zu funktionieren. Es macht auch für einen schönen Git-Alias.while
Loop-Syntax sieht für mich etwas komisch aus. Sie können nur das verwenden,git for-each-ref ... | while read branch; do ...
das kein FIFO benötigt und in derselben Reihenfolge wie die geschriebenen Befehle ausgeführt wird.git for-each-ref --format='%(refname:short) tracks %(upstream:short)' refs/heads/*
Eine Alternative zu Kubis Antwort besteht darin, sich die
.git/config
Datei anzusehen, in der die Konfiguration des lokalen Repositorys angezeigt wird :cat .git/config
quelle
git config --get-regex branch
zeigt eine Zeile für jeden lokalen Zweig. Ein Tracking-Zweig sieht folgendermaßen aus:
Ein Nicht-Tracking sieht folgendermaßen aus:
quelle
git branch -vv
. 🙏git config --global alias.track 'for-each-ref --format='\''%(refname:short) <- %(upstream:short)'\'' refs/heads'
Für die aktuelle Branche gibt es zwei gute Möglichkeiten:
oder
Diese Antwort ist auch hier auf eine etwas andere Frage, die (fälschlicherweise) als Duplikat markiert wurde.
quelle
git for-each-ref --shell --format='%(refname:short) %(upstream:short)' refs/heads
.Für den aktuellen Zweig könnte man auch sagen
git checkout
(ohne irgendeinen Zweig). Dies ist ein No-Op mit Nebenwirkungen, um die Tracking-Informationen für den aktuellen Zweig anzuzeigen, falls vorhanden.quelle
git checkout .
, was kein No-Op ist.Ich benutze diesen Alias
dann
quelle
Basierend auf der Antwort von Olivier Refalo
Es wird nur lokal mit konfigurierter Spur angezeigt.
Schreiben Sie es in ein Skript namens git-track auf Ihrem Pfad und Sie erhalten einen git track- Befehl
Eine ausführlichere Version unter https://github.com/albfan/git-showupstream
quelle
git config --get-regexp "branch\.$current_branch\.remote"
gibt Ihnen den Namen der Fernbedienung, die verfolgt wird
git config --get-regexp "branch\.$current_branch\.merge"
gibt Ihnen den Namen des Remote-Zweigs, der verfolgt wird.
Sie müssen $ current_branch durch den Namen Ihres aktuellen Zweigs ersetzen. Sie können das dynamisch mit bekommen
git rev-parse --abbrev-ref HEAD
Das folgende Mini-Skript kombiniert diese Dinge. Stecken Sie es in eine Datei mit dem Namen
git-tracking
, machen Sie es ausführbar und stellen Sie sicher, dass es sich in Ihrem Pfad befindet.dann kannst du sagen
Beachten Sie, dass sich der Name des Remote-Zweigs von Ihrem lokalen Zweig unterscheiden kann (obwohl dies normalerweise nicht der Fall ist). Zum Beispiel:
Wie Sie im Code sehen können, ist der Schlüssel dazu das Extrahieren der Daten aus der Git-Konfiguration. Ich benutze nur sed, um die fremden Daten zu löschen.
quelle
Hier ist eine ordentliche und einfache. Kann überprüfen
git remote -v
, was Ihnen den gesamten Ursprung und vor dem aktuellen Zweig zeigt.quelle