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)?
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
.
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.
DoncOrigin/master
est une branche de suivi à distance pourmaster
dans leOrigin
repo.
Mais en réalité, une fois que vous avez établi une relation de branche en amont entre:
master
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
.
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