Das bedeutet also, dass Sie alle entfernten Niederlassungen in Puppet verfolgen können, obwohl Sie einige lokale Niederlassungen haben. Was bedeuten die vielen "verfolgten" Zeichen, die Sie im Ergebnis des Befehls sehen? Von welcher Zweigstelle "verfolgt"?
PJ.
Die entfernten Niederlassungen Verfolgt wird , dass , wenn Sie ein tun git fetchoder git pullAktualisierungen an die Remote - Niederlassungen in Ihrem geklonten Repository verfolgt werden. Die lokalen Zweige sind nur das, lokale Zweige der entfernten Zweige und somit Aktualisierungen der entfernten Zweige werden nachverfolgt und zusammengeführt, wenn der entsprechende Befehl dazu gegeben wird. Ich beziehe explizit die Option '-t' ein, wenn der lokale Zweig erstellt wird, um sicherzustellen, dass er den Zweig verfolgt, von dem er stammt. Denken Sie daran, dass eine lokale Niederlassung auch eine andere lokale Niederlassung nachverfolgen kann und keine entfernte Niederlassung sein muss.
Jeremy Bouse
5
@PJ: Der Begriff „Spur“ hat in Git zwei unterschiedliche Bedeutungen. Die "verfolgten" Zeilen in git remote show remote-namebeziehen sich auf "Verfolgen von Zweigen" (Schnappschüsse von Zweigen aus entfernten Repositorys). Die Zeilen „Zusammenführen mit“ beziehen sich auf lokale Zweige, die eine Konfiguration für „Upstream-Zweige“ aufweisen (erstellt mit der Option --track/ -tvon git branch oder git checkout und daher häufig mit „Tracking-Zweigen“ verwechselt).
Chris Johnsen
" Fernverfolgungszweig " ist der aktuelle Glossareintrag für "Verfolgungszweige", der oben erwähnt wurde. Das Dokument wurde in 8b3f3f84 aktualisiert .
ento
124
Für alle Branchen:
git branch -avv
Nur für lokale Niederlassungen:
git branch -lvv
Nur für entfernte Zweigstellen:
git branch -rvv
Zeigt Ihnen alle Filialen sowie den Namen der vorgelagerten Filiale an.
Wenn Sie die Informationen in einem automatisierten Kontext (z. B. einem Skript) verwenden möchten, sollten Sie git for-each-refstattdessen die niedrigere Ebene („Sanitär“) verwenden.
% git remote show origin
* remote origin
⋮
Local branches configured for 'git pull':
master merges with remote master
pu merges with remote pu
⋮
% git for-each-ref --format='%(refname:short) <- %(upstream:short)' refs/heads
master <- origin/master
pu <- origin/pu
Die haben git for-each-refdas %(upstream)Token in Git 1.6.3 gelernt . In früheren Versionen von Git müssen Sie die Tracking-Informationen mit git config branch.<name>.remoteund extrahieren git config branch.<name>.merge(wahrscheinlich git for-each-refzum Erstellen der Befehle für jeden lokalen Zweignamen).
Ihre Antworten sind viel prägnanter und leichter zu verfolgen, sodass Sie die
höchste Bewertung erhalten
Um es weniger prägnant, aber eine nette Art und Weise zur Verfügung stellen , um visuell zu überprüfen , dass Remote - Namen der gleichen wie die lokalen Zweignamen sind, eine gemeinsame git Gotcha: in bashgit for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
Wälzfräser
19
Für einen bestimmten Zweig können Sie git rev-parsemit dem Suffix @{u}oder @{upstream}auf dem Zweignamen Folgendes verwenden:
Dies könnte auch das erwähnte verwenden git for-each-ref, aber ich fand den direkten Zugriff etwas einfacher als das Filtern der Ausgabe für den aktuellen Zweig.
Sie könnten erwägen, "set -e" am oberen Rand des Skripts zu verwenden. So können Sie alle Instanzen von "|| exit $?" bei gleichem Fail-Early-Verhalten.
John Whitley
@ JohnWhitley: Danke, ich habe meine Antwort bearbeitet. Ich kenne mich aus, halte mich set -eaber normalerweise an die explizite Prüfung. Aber in diesem Fall ist es wirklich besser.
Ingo Karkat
Ich arbeite nicht an git version 1.9.4. Echos nichts :(
Ain
8
.git/config Die Datei enthält auch die Informationen zum Verfolgungszweig als
Ich musste den entsprechenden Remote-Zweig (falls vorhanden) für jeden lokalen Zweig in einer Schleife finden, die auf eine Liste der lokalen Zweige reagierte. Am Ende habe ich Folgendes verwendet:
git for-each-ref --format='%(refname:short):%(upstream:short)' refs/heads | grep "^LocalBranchName:.*/" | sed "s/^LocalBranchName://"
Dies wird nichts (eine leere Zeichenkette) für lokale Zweige ausgeben, die keinen entsprechenden entfernten Zweig haben ("someremote / somebranch").
Antworten:
Am Beispiel meiner Puppet-Kopie, die aus dem Upstream-Git-Repository auf Github.com ausgecheckt wurde ...
Wenn ich dann folgendes ausführen würde:
Führen Sie den
git remote show origin
Befehl zum Schluss erneut aus. Dann wird unten unten Folgendes angezeigt:quelle
git fetch
odergit pull
Aktualisierungen an die Remote - Niederlassungen in Ihrem geklonten Repository verfolgt werden. Die lokalen Zweige sind nur das, lokale Zweige der entfernten Zweige und somit Aktualisierungen der entfernten Zweige werden nachverfolgt und zusammengeführt, wenn der entsprechende Befehl dazu gegeben wird. Ich beziehe explizit die Option '-t' ein, wenn der lokale Zweig erstellt wird, um sicherzustellen, dass er den Zweig verfolgt, von dem er stammt. Denken Sie daran, dass eine lokale Niederlassung auch eine andere lokale Niederlassung nachverfolgen kann und keine entfernte Niederlassung sein muss.git remote show remote-name
beziehen sich auf "Verfolgen von Zweigen" (Schnappschüsse von Zweigen aus entfernten Repositorys). Die Zeilen „Zusammenführen mit“ beziehen sich auf lokale Zweige, die eine Konfiguration für „Upstream-Zweige“ aufweisen (erstellt mit der Option--track
/-t
von git branch oder git checkout und daher häufig mit „Tracking-Zweigen“ verwechselt).Für alle Branchen:
Nur für lokale Niederlassungen:
Nur für entfernte Zweigstellen:
Zeigt Ihnen alle Filialen sowie den Namen der vorgelagerten Filiale an.
quelle
git branch -lvv
kann es nützlich sein, nur lokale Zweige mit Upstream anzuzeigengit branch -vv
für mich ...Jeremy Bouse zeigt, wie
git remote show
Tracking-Informationen angezeigt werden . Das sollte ausreichen, wenn Sie die Informationen nur für den menschlichen Verzehr benötigen.Wenn Sie die Informationen in einem automatisierten Kontext (z. B. einem Skript) verwenden möchten, sollten Sie
git for-each-ref
stattdessen die niedrigere Ebene („Sanitär“) verwenden.Die haben
git for-each-ref
das%(upstream)
Token in Git 1.6.3 gelernt . In früheren Versionen von Git müssen Sie die Tracking-Informationen mitgit config branch.<name>.remote
und extrahierengit config branch.<name>.merge
(wahrscheinlichgit for-each-ref
zum Erstellen der Befehle für jeden lokalen Zweignamen).quelle
git for-each-ref --format=$'\n'' '' '' '' '' '' ''/%(refname:short);%(upstream:short)' refs/heads | tr ';' $'\n'
Für einen bestimmten Zweig können Sie
git rev-parse
mit dem Suffix@{u}
oder@{upstream}
auf dem Zweignamen Folgendes verwenden:... oder für die Kurzform hinzufügen
--abbrev-ref
Sie können die
branch@{upstream}
Syntax im Allgemeinen überall dort verwenden, wo ein Commit erwartet wird.quelle
git rev-parse --symbolic-full-name HEAD
vs.git rev-parse --symbolic-full-name HEAD@{u}
, danke!Ich verwende das folgende Shell-Skript (benannt
git-tracks
), um den Remote-Zweig anzuzeigen, der vom aktuellen Zweig verfolgt wird:Dies könnte auch das erwähnte verwenden
git for-each-ref
, aber ich fand den direkten Zugriff etwas einfacher als das Filtern der Ausgabe für den aktuellen Zweig.quelle
set -e
aber normalerweise an die explizite Prüfung. Aber in diesem Fall ist es wirklich besser.git version 1.9.4
. Echos nichts :(.git/config
Die Datei enthält auch die Informationen zum Verfolgungszweig alsquelle
zeigt genau das, wonach du fragst. Es zeigt die lokalen Zweige zusammen mit dem entsprechenden Remote-Zweig, den sie verfolgen.
quelle
Fügen Sie diese Runen zum
[alias]
Abschnitt Ihrer .gitconfig-Datei hinzu:quelle
Ich musste den entsprechenden Remote-Zweig (falls vorhanden) für jeden lokalen Zweig in einer Schleife finden, die auf eine Liste der lokalen Zweige reagierte. Am Ende habe ich Folgendes verwendet:
Dies wird nichts (eine leere Zeichenkette) für lokale Zweige ausgeben, die keinen entsprechenden entfernten Zweig haben ("someremote / somebranch").
quelle
Versuchen Sie es
git branch
mit Optionen :Andernfalls überprüfen Sie Ihre
.git/config
.quelle