mise à jour
Comme l'a souligné amalloy, les dernières versions de git d'aide pour trouver la correspondance de suivi de la branche pour une branche donnée, en donnant "branchname@{en amont}" (ou "branchname@{u}", ou "@{u}" pour le suivi, la direction de). Effectivement cela remplace le script ci-dessous. Vous pouvez le faire:
git rev-list @{u}..
git rev-list --left-right --boundary @{u}...
gitk @{u}...
etc. Par exemple, j'ai git q
alias git log --pretty='...' @{u}..
de me montrer en "file d'attente" s'engage prêt pour pousser.
réponse originale à cette question
Il ne semble pas être un moyen facile de trouver le suivi de la branche en général, sans l'analyse beaucoup plus de git config que ce qui est pratique dans quelques commandes shell. Mais pour de nombreux cas, cela ira un long chemin:
# work out the current branch name
currentbranch=$(expr $(git symbolic-ref HEAD) : 'refs/heads/\(.*\)')
[ -n "$currentbranch" ] || die "You don't seem to be on a branch"
# look up this branch in the configuration
remote=$(git config branch.$currentbranch.remote)
remote_ref=$(git config branch.$currentbranch.merge)
# convert the remote ref into the tracking ref... this is a hack
remote_branch=$(expr $remote_ref : 'refs/heads/\(.*\)')
tracking_branch=refs/remotes/$remote/$remote_branch
# now $tracking_branch should be the local ref tracking HEAD
git rev-list $tracking_branch..HEAD
L'autre, plus de force brute, de l'approche:
git rev-list HEAD --not --remotes
jamessan la réponse explique comment trouver les différences relatives entre $tracking_branch et la TÊTE à l'aide de git rev-list
. Une chose amusante que vous pouvez faire:
git rev-list --left-right $tracking_branch...HEAD
(note de trois points entre $tracking_branch et de la TÊTE). Cela permettra de montrer s'engage sur les deux "bras" avec une marque de distinction à l'avant: "<" pour les livraisons sur $tracking_branch, et ">" pour les livraisons sur la TÊTE.