Vous avez les idées confuses sur la signification de l’expression branche de suivi distante ? Ne vous inquiétez pas, il n’y a pas que vous. Il y a simplement deux types de branches : locales et distantes. Les branches locales sont légions, celles-ci correpondent juste à un chemin dans le DAG auquel vous allez faire des commits. Le suivi distant a d’autres objectifs :
git pull
ou git fetch
.git status
vous permettra de savoir de combien de commits vous différez par rapport à la version distante de la branche.Heureusement, la commande git branch
nous indique le contenu de chaque branche. Pour des dépôts simples, récemment clonés, vous verrez cette sortie :
$ git branch * master
Cette sortie vous montre la branche locale par défaut, soit la branche master. Si vous voulez voir les branches distantes :
$ git branch -r origin/HEAD origin/master
Et finalement, pour les voir toutes:
$ git branch -a * master origin/HEAD origin/master
Quand des branches sont créées avec l’option --track
, elles sont automatiquement liées à la branche dsitante. Par exemple, si vous voulez créer une nouvelle branche de la branche master du dépôt distant origin, la commande suivante extrait les données
Par exemple, si vous voulez créer une nouvelle branche de la branche master du dépôt distant master, la commande suivante extrait les données à distance et crée une automatiquement:
$ git branch --track feature1 origin/master Branch feature1 set up to track remote branch refs/remotes/origin/master.
Puis, la commande git checkout
permet de sélectionner une branche et de travailler dessus et comme celle-ci est liée à la branche distante, elle est configurée pour suivre les modifications des rapatriements ou des envois de données.
Des branches locales peuvent également être créée à partir de n’importe quel endroit, une branche distante ou un point d’un arbre. Voici quelques exemples :
$ git branch --no-track feature2 origin/master $ git branch --no-track feature3 HEAD~4 $ git branch --no-track feature4 f21e886
Pour ces exemples, l’option --no-track
a été utilisée pour s’assurer que ces branches soient découplées de ces branches distantes.
Ce comportemenent peut être ajusté en utilisant le fichier ~/.gitconfig
. Comme indiqué dans le Git Cheat Sheet :
git config branch.autosetupmerge true
tells git-branch and git-checkout to setup new branches so that git-pull(1)
will appropriately merge from that remote branch. Recommended. Without this,
you will have to add —track to your branch command or manually merge remote
tracking branches with “fetch” and then “merge”.
cette commande précise que git-branch et git-checkout doivent être liées à
une branche distante à partir de laquelle git-pull(1) va opérer une fusion.
On vous le recommande. Sans cette option, il vous faudra ajouter l’option —track à vos
commandes branch ou fusionner manuellement vos branches distantes avec “fetch” puis “merge”.
J’espère que cet article vous a permis d’avoir les idées plus claires sur les notions de branches et sur l’utilisation du suivi des branches distantes. Si vous avez des propositions d’explicaitons plus claires ou des liens utiles, merci de les ajouter dans les commentaires ou bien proposer une astuce !