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 qui est 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 ceci si vous tirez toujours de la même branche amont dans la nouvelle branche, et si vous ne voulez pas utiliser explicitement "git pull".
Malheureusement, étant nouveau dans git et venant de SVN, cette définition n'a absolument aucun sens pour moi.
Je lis " The Pragmatic Guide to Git " (excellent livre, au fait), et ils semblent suggérer que le suivi des branches est une bonne chose et qu'après avoir créé votre première télécommande (origine, dans ce cas), vous devriez configurez votre branche principale comme une branche de suivi, mais cela ne explique malheureusement pas pourquoi une branche de suivi est une bonne chose ou quels avantages vous obtenez en configurant votre branche principale comme une branche de suivi de votre référentiel d'origine .
Quelqu'un peut-il s'il vous plaît m'éclairer (en anglais)?
la source
--track
option pour créer une branche (locale) dont l'une de ces branches de suivi à distance est définie en amont . La terminologie a quelque peu évolué entre 2006 et 2019, de sorte que des personnes différentes peuvent parfois signifier quelque chose de différent par chacun de ces mots.origin/master
: ils sont dans votre référentiel, mais ils sont la façon dont votre Git se souvient des noms de branche comme on le voit dans un autre dépôt Git sur àorigin
. Si vous utilisez alors le mot amont , qui est le terme plus moderne, de dire que votremaster
aorigin/master
fixé comme en amont , vous pouvez éviter toute cette confusion terminologique.Réponses:
Le livre ProGit a une très bonne explication :
Suivi des branches
L'extraction d'une branche locale à partir d'une branche distante crée automatiquement ce qu'on appelle une branche de suivi. Les succursales de suivi sont des succursales locales qui ont une relation directe avec une succursale distante. Si vous êtes sur une branche et un type de suivi
git push
, Git sait automatiquement vers quel serveur et quelle branche pousser. En outre, l'exécutiongit pull
sur l'une de ces branches récupère toutes les références distantes, puis fusionne automatiquement dans la branche distante correspondante.Lorsque vous clonez un référentiel, il crée généralement automatiquement une branche maître qui suit l'origine / maître. C'est pourquoi
git push
etgit pull
travaillez hors de la boîte sans autres arguments. Cependant, vous pouvez configurer d'autres branches de suivi si vous le souhaitez - celles qui ne suivent pas les branches à l'origine et ne suivent pas la branche principale. Le cas simple est l'exemple que vous venez de voir, en cours d'exécutiongit checkout -b [branch] [remotename]/[branch]
. Si vous avez la version 1.6.2 ou ultérieure de Git, vous pouvez également utiliser le--track
raccourci:Pour configurer une branche locale avec un nom différent de la branche distante, vous pouvez facilement utiliser la première version avec un nom de branche locale différent:
Désormais, votre branche locale
sf
va automatiquement pousser vers et depuisorigin/serverfix
.BONUS:
git status
infos supplémentairesAvec une branche de suivi,
git status
vous dira si vous êtes loin derrière votre branche de suivi - utile pour vous rappeler que vous n'avez pas encore poussé vos modifications! Cela ressemble à ceci:ou
la source
Vous trouverez ci-dessous mes notes d'apprentissage personnelles sur les branches de suivi GIT, j'espère qu'elles seront utiles pour les futurs visiteurs:
Suivi des branches et "git fetch":
la source
Le livre Pro Git mentionne :
Pas exactement. La question SO « Avoir du mal à comprendre
git-fetch
» comprend:Mais en fait, 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 à distanceorigin/master
qui, à son tour, suit la branche principale du dépôt en amontorigin
.la source
git status
recevrai un message de suivi de validation en ce qui concerne les dépôts d'origine et en amont? (Settup: j'ai cloné le repo de quelqu'un localement, poussé mon clone vers un nouveau repo sur mon compte GitHub et défini localement l'origine et les télécommandes en amont de mon repo github et du repo cloné cloné respectivement).C'est ainsi que j'ai ajouté une branche de suivi afin de pouvoir en extraire dans ma nouvelle branche:
la source