Alle anderen Antworten sprechen von "Upstream" (dem Zweig, aus dem Sie ziehen).
Aber eine lokale Niederlassung kann Push auf einen anderen Zweig als die von er zieht.
master
Möglicherweise wird nicht auf den Remote-Tracking-Zweig " origin/master
" verschoben .
Der Upstream- Zweig für master
könnte sein origin/master
, aber er könnte auf den Remote-Tracking-Zweig origin/xxx
oder sogar pushen anotherUpstreamRepo/yyy
.
Diese werden branch.*.pushremote
zusammen mit dem global remote.pushDefault
Wert für den aktuellen Zweig festgelegt .
Es ist dieser Remote-Tracking-Zweig, der bei der Suche nach nicht gepushten Commits zählt: derjenige, der verfolgt, branch at the remote
wohin der lokale Zweig verschoben wird .
Das branch at the remote
kann wieder origin/xxx
oder sogar sein anotherUpstreamRepo/yyy
.
Git 2.5+ (Q2 2015) führt eine neue Verknüpfung dafür ein: <branch>@{push}
Siehe 29bc885 begehen , begehen 3dbe9db , begehen adfe5d0 , begehen 48c5847 , begehen a1ad0eb , begehen e291c75 , begehen 979cb24 , begehen 1ca41a1 , begehen 3a429d0 , begehen a9f9f8c , begehen 8770e6f , begehen da66b27 , begehen f052154 , begehen 9e3751d , begehen ee2499f [alle vom 21. Mai 2015] und Commit e41bf35 [01. Mai 2015] von Jeff King ( peff
) .
(Zusammengeführt von Junio C Hamano - gitster
-in commit c4a8354 , 05. Juni 2015)
Commit adfe5d0 erklärt:
sha1_name
: @{push}
Kurzschrift implementieren
In einem dreieckigen Workflow kann jeder Zweig zwei unterschiedliche Punkte von Interesse haben: den @{upstream}
, von dem Sie normalerweise ziehen, und das Ziel, zu dem Sie normalerweise pushen. Es gibt keine Abkürzung für Letzteres, aber es ist nützlich zu haben.
Beispielsweise möchten Sie möglicherweise wissen, welche Commits Sie noch nicht gepusht haben :
git log @{push}..
Oder stellen Sie sich als komplizierteres Beispiel vor, Sie ziehen normalerweise Änderungen aus origin/master
(die Sie als Ihre festgelegt haben @{upstream}
) und übertragen Änderungen auf Ihre persönliche Gabel (z myfork/topic
. B. as ).
Sie können von mehreren Computern aus auf Ihre Gabel drücken, sodass Sie die Änderungen vom Push-Ziel und nicht vom Upstream integrieren müssen .
Mit diesem Patch können Sie einfach Folgendes tun:
git rebase @{push}
anstatt den vollständigen Namen einzugeben.
Commit 29bc885 fügt hinzu:
for-each-ref
: Akzeptiere das %(push)
Format " "
Genau wie wir %(upstream)
" @{upstream}
" für jeden Schiedsrichter " " melden müssen, fügt dieser Patch " %(push)
" passend " @{push}
" hinzu.
Es unterstützt dieselben Modifikatoren für das Tracking-Format wie Upstream (weil Sie beispielsweise wissen möchten, welche Zweige Commits zum Pushen haben ).
Wenn Sie sehen möchten, wie viele Commits Ihre lokalen Niederlassungen im Vergleich zu der Niederlassung, auf die Sie drängen, voraus / hinterher sind:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
git log @{push}..
. Sehen Sie diese neue Verknüpfung@{push}
(die auf den