Nachdem Sie einen Zweig mit --track erstellt haben (oder den Standard beibehalten oder --notrack), möchten Sie später daran erinnert werden, was ein Zweig verfolgt. Gibt es einen anderen Weg, als durch die Datei .git/config zu suchen, um anzuzeigen, was ein Zweig verfolgt?Was ist diese Zweigverfolgung (wenn überhaupt) in Git?
Antwort
Verwenden Sie: git branch -vv
, um zu sehen, welche Zweige verfolgt werden und welche nicht.
Wenn Sie für einen bestimmten Zweig wissen möchten, können Sie tun:
git config --get branch.<branch>.remote
Wenn es eine Remote-druckt, es ist etwas zu verfolgen. Wenn es nichts druckt und Fehler zurückgibt, ist es nicht.
Wenn Sie automatisch auf diese Informationen zugreifen müssen, sollten Sie vermeiden, die Ausgabe von branch -vv
(slebetman’s answer) zu analysieren.
Git bietet eine Reihe von Befehlen auf niedrigerer Ebene mit stabilen Schnittstellen und Ausgabeformaten. Diese Befehle ("plumbing" genannt) sind die bevorzugte Schnittstelle für 'Scripting' Zwecke. Die git for-each-ref Befehl können die erforderlichen Informationen über den upstream
Token liefern (erhältlich in Git 1.6.3 und höher):
% git for-each-ref --shell --format='
b=%(refname:short) u=%(upstream:short)
# Make a fancy report or do something scripty with the values.
if test -n "$u"; then
printf "%s merges from %s\n" "$b" "$u"
else
printf "%s does not merge from anything\n" "$b"
fi
' refs/heads/ | sh
master merges from origin/master
other does not merge from anything
pu merges from origin/pu
Beachten Sie, dass mit git1.8.3 (April 22d, 2013), eine neue Art und Weise haben die zu betonen Upstream-Zweig:
„
git branch --vv
“ gelernt, den Namen des Zweigs malen sie mit in einer anderen Farbe integriert (color.branch.upstream
, die standardmäßig auf blau).
C:\prog\git\git>git branch -vv
* master 118f60e [origin/master] Sync with maint
^^^^^^^^^^^^^
|
--- now in blue
ist, dass Teil für mich nicht gefärbt ist. Ich bin auf Mac 1.8.4. Jeder weiß warum? – dongshengcn
oh, macht nichts. Ich muss die Farbe einschalten. – dongshengcn
@dongshengcn ja, ich mag es 'git config color.ui immer' '' 'https://gist.github.com/VonC/972690#file-gitconfig-L25 – VonC
Danke für den Hinweis Jefromi
Mit dem folgenden Befehl können Sie den Remote-Tracking-Zweig für einen bestimmten Zweig zu bekommen.
git config --get branch.<branch>.merge
Um den Remote-Tracking-Zweig zu ändern, können Sie einfach diesen Konfigurationswert ändern.
Hinweis: Dies ist eine alternative Möglichkeit zu git branch -vv
(bereits hier beantwortet)
und git branch -u
(Make an existing Git branch track a remote branch?)
Das für das Erhalten des Repository ist schön, aber es wird nicht die Zweignamen (die unterschiedlich sein können) – Casebash
@Casebash: True, aber das ist eine * sehr * seltene Situation, und wenn Sie wissen, dass Sie drin sind, können Sie eine andere Konfigurationsvariable greifen. Dies hat den Vorteil, dass es (verglichen mit der Git-Verzweigung -vv) keine Fremdausgabe hat (d. H. Es ist maschinenparabel). Es wird manchmal nützlich sein. – Cascabel
Ich werde zum Vorteil anderer Leute hinzufügen, dass die Konfigurationsvariable für den Zweigname 'branch.fees.merge' – Casebash