Ich habe in meinem lokalen repo ( test-branch
) einen Zweig zum Testen erstellt, auf den ich verschoben habe Github
.
Wenn ich zu meinem Github
Konto gehe und dieses auswähle test-branch
, werden folgende Informationen angezeigt:
This branch is 1 commit ahead and 2 commits behind master
Meine Fragen sind:
- Wie kann ich diese Informationen lokal anzeigen (dh einen Befehl, der dies auf dem Terminal anzeigt, anstatt es öffnen
Github
zu müssen, um sie anzuzeigen )? Ich weiß, dass ich die Unterschiede zwischen Zweigen sehen kann, indem ich:
git diff master..test-branch
oder mit
Meld
(was ich bevorzuge):git difftool master..test-branch
Aber ich habe mich gefragt, ob es eine Möglichkeit gibt, die Commits vor und hinter sich getrennt zu sehen. IE: Gibt es eine Möglichkeit zu zeigen, dass 1 Commit von selbst voraus und dann diese 2 Commits von selbst zurück?
git for-each-ref --format="%(push:track)" refs/heads
. Siehe meine Antwort untenAntworten:
Hier ist ein Trick, den ich gefunden habe, um zwei Zweige zu vergleichen und zu zeigen, wie viele Commits jeder Zweig vor dem anderen liegt (eine allgemeinere Antwort auf Ihre Frage 1):
Für lokale Niederlassungen:
git rev-list --left-right --count master...test-branch
Für entfernte Filialen:
git rev-list --left-right --count origin/master...origin/test-branch
Dies ergibt eine Ausgabe wie die folgende:
1 7
Dieser Ausgang bedeutet: „ Im Vergleich zu
master
,test-branch
7 Commits vor und 1 verpflichten hinter sich .“Sie können auch lokale Zweige mit entfernten Zweigen vergleichen, z. B.
origin/master...master
um herauszufinden, wie viele Commits der lokalemaster
Zweig vor / hinter seinem entfernten Gegenstück liegt.quelle
git rev-list --left-right --count origin/master...@
) befindet - vorausgesetzt, der Benutzer tut diesgit fetch
zuvor. nützlich, um Pull-Anforderungen von veralteten Zweigen zu verhindern.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
oder--right-only
git fetch
Um zu sehen, wie viele Revisionen Sie lokal hinter sich haben, sollten Sie zunächst eine durchführen , um sicherzustellen, dass Sie die neuesten Informationen von Ihrer Fernbedienung haben.Die Standardausgabe von
git status
gibt an, wie viele Revisionen Sie vor oder hinter sich haben, aber normalerweise finde ich das zu ausführlich:Ich bevorzuge
git status -sb
:Tatsächlich alias ich dies einfach
git s
und dies ist der Hauptbefehl, den ich zum Überprüfen des Status verwende.Um den Unterschied in den "Voraus-Revisionen" von zu sehen
master
, kann ich die "Hinter-Revisionen" ausschließen vonorigin/master
:Um den Unterschied in den "Hinterrevisionen" von zu sehen
origin/master
, kann ich die "Vorausrevisionen" ausschließen vonmaster
:Wenn es 5 Revisionen vor oder hinter sich gibt, ist es möglicherweise einfacher, so zu schreiben:
AKTUALISIEREN
Um die Vorwärts- / Rückwärtsrevisionen zu sehen, muss der Zweig so konfiguriert sein, dass er einen anderen Zweig verfolgt. Für mich ist dies das Standardverhalten, wenn ich ein Remote-Repository klone und nachdem ich einen Zweig mit verschoben habe
git push -u remotename branchname
. Meine Version ist 1.8.4.3, aber es funktioniert so lange ich mich erinnere.Ab Version 1.8 können Sie den Tracking-Zweig folgendermaßen einstellen:
Ab Version 1.7 war die Syntax anders:
quelle
git
Sie? Ich kann weder mitgit status
noch mit reproduzieren, was Sie bekommengit status -sb
. Wenn ich einen der Befehle (nach dem Ausführengit fetch
) versuche, erhalte ich keine Informationen zu Commits vor / nach.master
und angewendet, undorigin/master
ich möchte diese Unterschiede fürmaster
und einen anderen Zweig sehentest-branch
. Könnten Sie Ihre Antwort auf dieses Problem neu formatieren?Mit Git 2.5+ haben Sie jetzt eine weitere Option, um für alle Zweige, die so konfiguriert sind, dass sie auf einen Zweig übertragen werden, vorwärts / rückwärts zu sehen.
Weitere Informationen finden Sie unter " Anzeigen nicht gepusster Git-Commits ".
quelle
refs/heads
mit dem Namen der aktuellen Niederlassung ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
Sie können es auch verwenden
awk
, um es etwas schöner zu machen:Sie können sogar einen Alias erstellen, der immer zuerst den Ursprung abruft und dann die Zweige vergleicht
quelle
Nach einem Git-Abruf können Sie den Git-Status ausführen, um anzuzeigen, wie viele Commits der lokale Zweig vor oder hinter der Remote-Version des Zweigs liegt.
Dies zeigt Ihnen jedoch nicht, wie viele Commits vor oder hinter einem anderen Zweig liegen. Ihre Optionen sind der volle Unterschied, wenn Sie sich Github ansehen oder eine Lösung wie Vimhsa verwenden, die oben verlinkt ist: Git-Status über alle Repos
quelle