Todas las otras respuestas hablan de "aguas arriba" (la rama de la que extrae).
Pero una rama local puede empujar a una rama diferente de la que extrae.
master
podría no empujar a la rama de seguimiento remoto " origin/master
".
La rama ascendentemaster
podría ser origin/master
, pero podría empujar a la rama de seguimiento remoto origin/xxx
o incluso anotherUpstreamRepo/yyy
.
Estos se establecen branch.*.pushremote
para la rama actual junto con el global remote.pushDefault
valor.
Es esa rama de seguimiento remoto la que cuenta cuando se buscan confirmaciones no apresuradas: la que rastrea el lugar branch at the remote
donde se empujaría la rama local .
El branch at the remote
puede ser, de nuevo, origin/xxx
o incluso anotherUpstreamRepo/yyy
.
Git 2.5+ (Q2 2015) presenta un nuevo atajo para eso: <branch>@{push}
Ver cometer 29bc885 , comprometerse 3dbe9db , cometen adfe5d0 , comprometerse 48c5847 , comprometerse a1ad0eb , comprometerse e291c75 , comprometerse 979cb24 , comprometerse 1ca41a1 , comprometerse 3a429d0 , comprometerse a9f9f8c , comprometerse 8770e6f , comprometerse da66b27 , comprometerse f052154 , comprometerse 9e3751d , comprometerse ee2499f [todos del 21 de mayo 2015], y cometer e41bf35 [01 de mayo de 2015] por Jeff King ( peff
) .
(Fusionada por Junio C Hamano - gitster
-en commit c4a8354 , 05 jun 2015)
Comprometer adfe5d0 explica:
sha1_name
: implementar @{push}
taquigrafía
En un flujo de trabajo triangular, cada rama puede tener dos puntos de interés distintos: el @{upstream}
que normalmente extrae y el destino al que normalmente empuja. No hay una taquigrafía para este último, pero es útil tenerlo.
Por ejemplo, es posible que desee saber qué compromisos aún no ha presionado :
git log @{push}..
O como un ejemplo más complicado, imagine que normalmente extrae los cambios origin/master
(que configura como su @{upstream}
), y empuja los cambios a su propio tenedor personal (por ejemplo, como myfork/topic
).
Puede empujar a su tenedor desde múltiples máquinas, lo que requiere que integre los cambios desde el destino de empuje, en lugar de hacia arriba .
Con este parche, puedes hacer:
git rebase @{push}
en lugar de escribir el nombre completo.
Commit 29bc885 agrega:
for-each-ref
: aceptar el %(push)
formato " "
Así como tenemos " %(upstream)
" para informar el " @{upstream}
" para cada referencia, este parche agrega " %(push)
" para que coincida " @{push}
".
Admite los mismos modificadores de formato de seguimiento que en sentido ascendente (porque es posible que desee saber, por ejemplo, qué ramas tienen compromisos para impulsar ).
Si desea ver cuántos compromisos sus sucursales locales están adelante / atrás en comparación con la sucursal a la que está presionando:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
git log @{push}..
. Vea ese nuevo acceso directo@{push}
(haciendo referencia a la rama de seguimiento remoto que está presionando) en mi respuesta a continuación