Toutes les autres réponses parlent de "amont" (la branche d'où vous tirez).
Mais une branche locale peut pousser vers une autre branche que celle dont elle tire.
master
peut ne pas pousser vers la branche de suivi à distance " origin/master
".
La branche amont pour master
pourrait être origin/master
, mais elle pourrait pousser vers la branche de suivi à distance origin/xxx
ou même anotherUpstreamRepo/yyy
.
Celles-ci sont définies par branch.*.pushremote
pour la branche actuelle avec la global remote.pushDefault
valeur.
C'est cette branche de suivi à distance qui compte lors de la recherche de commits non poussés: celle qui suit branch at the remote
où la branche locale serait poussée.
Le branch at the remote
peut être, encore origin/xxx
ou même anotherUpstreamRepo/yyy
.
Git 2.5+ (Q2 2015) introduit un nouveau raccourci pour cela: <branch>@{push}
Voir commit 29bc885 , commit 3dbe9db , commit adfe5d0 , commit 48c5847 , commit a1ad0eb , commit e291c75 , commit 979cb24 , engager 1ca41a1 , engager 3a429d0 , engager a9f9f8c , engager 8770e6f , engager da66b27 , engager f052154 , engager 9e3751d , engager ee2499f [tous du 21 mai 2015], et commit e41bf35 [01 mai 2015] par Jeff King ( peff
) .
(Fusionné par Junio C Hamano - gitster
-dans commit c4a8354 , 05 juin 2015)
Commit adfe5d0 explique:
sha1_name
: implémenter le @{push}
raccourci
Dans un flux de travail triangulaire, chaque branche peut avoir deux points d'intérêt distincts: le point de départ @{upstream}
habituel et la destination vers laquelle vous appuyez normalement. Il n'y a pas de raccourci pour ce dernier, mais c'est utile d'avoir.
Par exemple, vous voudrez peut-être savoir quels commits vous n'avez pas encore poussés :
git log @{push}..
Ou, à titre d'exemple plus compliqué, imaginez que vous tirez normalement les modifications de origin/master
(que vous définissez comme votre @{upstream}
) et que vous transférez les modifications vers votre propre fork personnel (par exemple, as myfork/topic
).
Vous pouvez pousser vers votre fork depuis plusieurs machines, vous obligeant à intégrer les modifications à partir de la destination de push, plutôt qu'en amont .
Avec ce patch, vous pouvez simplement faire:
git rebase @{push}
plutôt que de taper le nom complet.
Le commit 29bc885 ajoute:
for-each-ref
: accepter le %(push)
format " "
Tout comme nous avons " %(upstream)
" pour signaler le " @{upstream}
" pour chaque référence, ce patch ajoute " %(push)
" pour correspondre à " @{push}
".
Il prend en charge les mêmes modificateurs de format de suivi qu'en amont (car vous souhaiterez peut-être, par exemple, quelles branches se sont engagées à pousser ).
Si vous voulez voir combien de commit vos succursales locales sont avance / en retard par rapport à la branche vers laquelle vous appuyez:
git for-each-ref --format="%(refname:short) %(push:track)" refs/heads
git log @{push}..
. Voir ce nouveau raccourci@{push}
(référençant la branche de suivi à distance vers laquelle vous