2010-09-02 8 views

Répondre

20

Utilisez: git branch -vv pour voir quelles branches sont suivies et celles qui ne le sont pas.

5

Si vous voulez savoir pour une branche donnée, vous pouvez faire:

git config --get branch.<branch>.remote 

Si elle imprime une télécommande, il y a quelque chose de suivi. Si cela n'imprime rien et renvoie un échec, ce n'est pas le cas.

+0

C'est agréable pour obtenir le dépôt, mais il ne reçoit pas le nom de la branche (qui peut être différent – Casebash

+0

@Casebash: C'est vrai, mais c'est une situation * très * rare, et si vous savez que vous y êtes, vous pouvez récupérer une autre variable de configuration. Cela a l'avantage (par rapport à 'git branch -vv') de ne pas avoir de sortie étrangère (c'est-à-dire qu'il est analysable par machine). Ce sera parfois utile. – Cascabel

+0

Je vais ajouter pour le bénéfice d'autres personnes que la variable de configuration pour le nom de branche est 'branch.fees.merge' – Casebash

1

Si vous avez besoin d'accéder à cette information de manière automatisée, vous voudrez éviter d'essayer d'analyser la sortie de branch -vv (slebetman’s answer).

Git fournit un ensemble de commandes de niveau inférieur avec des interfaces stables et des formats de sortie. Ces commandes (appelées "plomberie") sont l'interface préférée pour les "scripts". La commande git for-each-ref peut fournir les informations requises par le jeton upstream (disponible dans Git 1.6.3 et versions ultérieures):

% git for-each-ref --shell --format=' 

b=%(refname:short) u=%(upstream:short) 
# Make a fancy report or do something scripty with the values. 
if test -n "$u"; then 
    printf "%s merges from %s\n" "$b" "$u" 
else 
    printf "%s does not merge from anything\n" "$b" 
fi 

' refs/heads/ | sh 
master merges from origin/master 
other does not merge from anything 
pu merges from origin/pu 
5

Notez que avec git1.8.3 (April 22d, 2013), vous avez une nouvelle façon de mettre l'accent sur la branche amont:

« git branch --vv » a appris à peindre le nom de la branche, il intègre avec une couleur différente (color.branch.upstream, qui par défaut bleu).

C:\prog\git\git>git branch -vv 
* master 118f60e [origin/master] Sync with maint 
        ^^^^^^^^^^^^^ 
         | 
         --- now in blue 
+0

cette partie n'est pas coloriée pour moi. Je suis sur Mac 1.8.4. Quelqu'un sait pourquoi? – dongshengcn

+0

oh, tant pis. Je dois activer l'interface de couleur. – dongshengcn

+1

@dongshengcn oui, j'aime régler 'git config color.ui toujours': https://gist.github.com/VonC/972690#file-gitconfig-L25 – VonC

-1

Merci pour l'indice Jefromi

Avec la commande suivante, vous pouvez obtenir la branche de suivi à distance pour une branche spécifique.

git config --get branch.<branch>.merge 

Pour modifier la branche de suivi à distance, vous pouvez simplement modifier cette valeur de configuration.

Note: ceci est une autre façon de git branch -vv (déjà répondu ici)
et git branch -u (Make an existing Git branch track a remote branch?)