Tutte le altre risposte parlano di "upstream" (il ramo da cui tiri).
Ma un ramo locale può spingere verso un ramo diverso da quello da cui estrae.
master
potrebbe non passare al ramo di tracciamento remoto " origin/master
".
Il ramo a monte per master
potrebbe essere origin/master
, ma potrebbe spingere al ramo di tracciamento remoto origin/xxx
o addirittura anotherUpstreamRepo/yyy
.
Questi sono impostati da branch.*.pushremote
per il ramo corrente insieme al global remote.pushDefault
valore.
È quel ramo di tracciamento remoto che conta quando si cercano commit non compressi: quello che tiene traccia del punto in branch at the remote
cui il ramo locale verrebbe spinto.
La branch at the remote
può essere, ancora una volta, origin/xxx
o anche anotherUpstreamRepo/yyy
.
Git 2.5+ (Q2 2015) introduce una nuova scorciatoia per questo: <branch>@{push}
Vedere commettere 29bc885 , commettere 3dbe9db , commettere adfe5d0 , commettere 48c5847 , commettere a1ad0eb , commettere e291c75 , commettere 979cb24 , commettere 1ca41a1 , commettere 3a429d0 , commettere a9f9f8c , commettere 8770e6f , commettere da66b27 , commettere f052154 , commettere 9e3751d , commettere ee2499f [tutto dal 21 maggio 2015], e impegna e41bf35 [01 maggio 2015] da Jeff King ( peff
) .
(Unito da Junio C Hamano - gitster
-in commit c4a8354 , 05 giu 2015)
Commit adfe5d0 spiega:
sha1_name
: attuare la @{push}
scorciatoia
In un flusso di lavoro triangolare, ogni ramo può avere due punti di interesse distinti: @{upstream}
quello da cui normalmente si tira e la destinazione a cui si spinge normalmente. Non c'è una scorciatoia per quest'ultima, ma è utile avere.
Ad esempio, potresti voler sapere quali commit non hai ancora inviato :
git log @{push}..
O come esempio più complicato, immagina di estrarre normalmente le modifiche origin/master
(che hai impostato come tuo @{upstream}
) e di inviare le modifiche al tuo fork personale (ad esempio, come myfork/topic
).
Puoi spingere sul tuo fork da più macchine, richiedendo di integrare le modifiche dalla destinazione push, piuttosto che a monte .
Con questa patch, puoi semplicemente fare:
git rebase @{push}
piuttosto che digitare il nome completo.
Commit 29bc885 aggiunge:
for-each-ref
: accetta il %(push)
formato " "
Proprio come abbiamo " %(upstream)
" per segnalare il " @{upstream}
" per ogni riferimento, questa patch aggiunge " %(push)
" per abbinare " @{push}
".
Supporta gli stessi modificatori del formato di monitoraggio dell'upstream (perché potresti voler sapere, ad esempio, quali rami si sono impegnati a inviare ).
Se vuoi vedere quanti impegni le tue filiali locali sono avanti / indietro rispetto alla filiale che stai spingendo a:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
git log @{push}..
. Vedi quella nuova scorciatoia@{push}
(facendo riferimento al ramo di tracciamento remoto a cui stai spingendo) nella mia risposta di seguito