web-dev-qa-db-fra.com

Qu'est-ce qu'une branche de suivi?

Quelqu'un peut-il expliquer une "branche de suivi" telle qu'elle s'applique à git?

Voici la définition de git-scm.com :

Une "branche de suivi" dans Git est une branche locale connectée à une branche distante. Lorsque vous poussez et tirez sur cette branche, elle pousse et tire automatiquement vers la branche distante à laquelle elle est connectée.

Utilisez cette option si vous extrayez toujours de la même branche en amont dans la nouvelle branche et si vous ne souhaitez pas utiliser "git pull" explicitement.

Malheureusement, étant nouveau chez git et venant de SVN, cette définition n’a absolument aucun sens pour moi.

Je lis " Le Guide Pragmatique de Git " (excellent livre, en passant), et ils semblent suggérer que le suivi des branches est une bonne chose et qu'après la création de votre première télécommande (Origin, dans ce cas), vous devriez configurer votre branche principale pour qu’elle soit une branche de suivi, mais elle ne couvre malheureusement pas pourquoi une branche de suivi est une bonne chose ou quels avantages vous obtenez en configurant votre branche maître pour qu’elle soit une branche de suivi de votre référentiel Origin .

Quelqu'un peut-il m'éclairer s'il vous plaît (en anglais)?

134
jerhinesmith

Le livre ProGit a ne très bonne explication :

Suivi des branches

L'extraction d'une branche locale à partir d'une branche distante crée automatiquement ce que l'on appelle une branche de suivi. Les branches de suivi sont des branches locales ayant une relation directe avec une branche distante. Si vous êtes sur une branche de suivi et que vous tapez git Push, Git sait automatiquement quel serveur et quelle branche utiliser Push to. De plus, en exécutant git pull sur l’une de ces branches, toutes les références distantes seront extraites, puis fusionnées automatiquement dans la branche distante correspondante.

Lorsque vous clonez un référentiel, il crée généralement automatiquement une branche principale qui suit Origin/master. C’est pourquoi git Push et git pull fonctionnent sans aucun autre argument. Toutefois, vous pouvez configurer d’autres branches de suivi si vous le souhaitez - celles qui ne suivent pas les branches sur Origin et ne suivent pas la branche principale. Le cas simple est l'exemple que vous venez de voir, en cours d'exécution git checkout -b [branch] [remotename]/[branch]. Si vous avez Git version 1.6.2 ou ultérieure, vous pouvez également utiliser le --track sténographie:

$ git checkout --track Origin/serverfix
Branch serverfix set up to track remote branch refs/remotes/Origin/serverfix.
Switched to a new branch "serverfix"

Pour configurer une branche locale avec un nom différent de celui de la branche distante, vous pouvez facilement utiliser la première version avec un nom de branche local différent:

$ git checkout -b sf Origin/serverfix
Branch sf set up to track remote branch refs/remotes/Origin/serverfix.
Switched to a new branch "sf"

Maintenant, votre branche locale sf va automatiquement pousser vers et tirer de Origin/serverfix.

100
Assaf Lavie

Le livre Pro Gitmentions :

Les branches de suivi sont des branches locales qui ont une relation directe avec une branche distante.

Pas exactement. La SO question " Vous avez du mal à comprendre git-fetch "comprend:

Il n’existe pas de concept de suivi local, mais suivi à distance.
Donc Origin/master est une branche de suivi à distance pour master dans le Origin repo.

Mais en réalité, une fois que vous avez établi une relation de branche en amont entre:

  • une branche locale comme master
  • et une branche de suivi à distance comme Origin/master

Ensuite, vous pouvez considérer master comme une branche de suivi locale : elle suit la branche de suivi à distance Origin/master qui suit à son tour la branche principale du rapport amontOrigin.

alt text

34
VonC

Vous trouverez ci-dessous mes notes d’apprentissage personnelles sur les branches de suivi GIT. J'espère que cela sera utile aux futurs visiteurs:

enter image description hereenter image description hereenter image description hereenter image description hereenter image description hereenter image description here


Suivi des branches et "git fetch":

enter image description hereenter image description hereenter image description here

25
hagrawal

C'est ainsi que j'ai ajouté une branche de suivi afin que je puisse en tirer dans ma nouvelle branche:

git branch --set-upstream-to Origin/Development new-branch
4
agrublev