web-dev-qa-db-fra.com

Qu'est-ce qu'une référence de suivi?

Lorsque je pousse une nouvelle branche vers un référentiel distant via Git Extensions, je reçois une alerte disant

The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?

Qu'est-ce qu'une référence de suivi? Je n'ai trouvé que quelques mentions de références de suivi dans Google et aucune véritable définition.

60
Simon Tewsi

L'idée de base est qu'il existe des références purement locales (par exemple, des branches, des balises), puis des références de suivi à distance, qui suivent ce qui se passe dans d'autres référentiels. Étant donné que Git est décentralisé, il vous est possible de choisir un nom pour une branche qui est le même que celui utilisé dans une télécommande, sans avoir connu l'autre, de sorte qu'ils ont un travail complètement différent sur eux. Git vous permet de le faire, mais il fournit également un moyen de lier des références locales à des références distantes également.

Par exemple, tenez compte des éléments suivants:

% git branch -a
* master
  remotes/Origin/HEAD -> Origin/master
  remotes/Origin/maint
  remotes/Origin/master
  remotes/Origin/next
  remotes/Origin/pu
  remotes/Origin/todo

Ici, nous avons des branches sur Origin appelées next et todo.

% git checkout -t remotes/Origin/next
Branch next set up to track remote branch next from Origin.
Switched to a new branch 'next'
% git branch todo    

Nous avons maintenant une branche locale next qui suit la branche distante du même nom et la branche locale todo qui ne sera pas mise à jour avec les modifications de remotes/Origin/todo.

27
Eric Walker

Une branche git locale peut suivre une branche distante, ce qui signifie que les commandes git Push et git pull sauront par défaut pousser et tirer les commits vers et depuis la branche suivie. Git status indiquera également le statut entre votre branche locale actuelle et la branche distante qu'elle suit. Lorsque vous clonez un référentiel git, git ajoutera une référence de suivi à la branche principale locale pour suivre la branche principale distante. Lorsque vous extrayez d'une nouvelle branche distante, git ajoutera une référence de suivi à la branche locale créée pour suivre la branche distante que vous avez extraite.

Cependant, si vous créez une nouvelle branche localement, puis la poussez vers le référentiel distant, vous devez explicitement dire à git si vous souhaitez que votre branche locale commence à suivre la nouvelle branche distante. Vous faites cela avec le -u ou --set-upstream option lors du transfert de la branche locale vers le référentiel distant: git Push -u Origin my-new-branch.

Vous pouvez vérifier les branches distantes que vos branches locales suivent (le cas échéant) avec la commande git branch -vv Ci-dessous, un petit exemple de sortie.

  b1     560eb64 Added file.txt
  b2     560eb64 [Origin/b2] Added file.txt
  b3     b638c18 [Origin/r1: ahead 1] Added file3.txt
* master 560eb64 [Origin/master] Added file.txt

Dans ce cas, nous avons des succursales locales master, b1, b2 et b3. La branche master suit une branche distante appelée master, la b1 la branche ne suit aucune branche distante, la b2branch suit une branche distante appelée b2et le b3branch suit une branche distante appelée r1. git branch -vv indique également le statut de la branche liée à la branche tracée. Ici branche b3 est 1 commit avant la branche distante suivie et les autres branches sont à jour avec leurs branches distantes respectives respectives.

Donc, si vous créez une branche locale et que vous envoyez au référentiel distant, souhaitez-vous ajouter une référence de suivi à la branche ou non? Habituellement, lorsque vous transmettez une nouvelle branche locale au référentiel distant, vous le faites pour collaborer avec d'autres développeurs sur une fonctionnalité. Si vous ajoutez une référence de suivi à votre branche locale, vous pouvez facilement extraire les modifications que d'autres personnes ont apportées à la branche, donc je dirais que dans la plupart des cas, vous souhaitez ajouter la référence de suivi.

8
Hemaolle

L'excellent blog de Nick Quaranto git ready a un article expliquant branches de suivi à distance :

Les succursales de suivi à distance ont plusieurs objectifs différents:

  • Ils sont utilisés pour lier ce que vous travaillez localement par rapport à ce qui est sur la télécommande.

  • Ils sauront automatiquement de quelle branche distante obtenir les modifications lorsque vous utilisez git pull ou git fetch.

  • Encore mieux, git status lui reconnaîtra combien de commits vous êtes devant la version distante de la branche.

5
Simon Tewsi

oui, vous voudrez probablement l'ajouter. faites ceci dans la console: git branch --set-upstream-to Origin/master

2
whatsupanna