Outils pour utilisateurs

Outils du site


dev:git:branches

Gestion des branches avec git

Le HEAD est le pointeur sur le dernier commit de la branche courante. La commande git branch liste les branches existantes et marque d'une astérisque la branche courante:

# lister les branches
git branch
 
# Afficher seulement le nom de la branche courante
git branch --show-current
 
# lister les branches non fusionnées
# avec la branche courante
git branch --no-merged
 
# lister les branches fusionnées avec
# avec la branche courante
git branch --merged
 
# Lister les branches fusionnées
# avec la branche 'testing'
git branch --merged testing
 
# Lister toutes les branches
git branch --all

Créer une branche

Généralement on souhaite créer la branche et basculer dessus :

git checkout -b issue33
 
# Equivalent
git switch --create issue33

Branches locales et distantes

Lors d'un clonage de dépot, la branche master du serveur en amont est référencée par origin/master. La branche master locale est automatique définie comme suivant cette branche. on parle de branche de suivi (tracking branch) et la branche qu'elle suit est dite branche amont (upstream branch).

Le temps passant si des collaborateurs ont poussé des modifications sur le serveur nous n'en avons pas connaissance. Pour mettre à jour notre dépôt, on récupère les modifications apportées sur le dépôt distant via un fetch:

# Récupérer les modifications disponibles
# sur le dépot en amont nommé "origin"
git fetch origin
 
# Récupère les modifications sur le serveur
# amont yoann
git fetch yoann

Les modifications apportées par les collaborateurs sont ajoutées dans notre dépot mais ne sont pas intégrées à notre branche locale master. Pour ce faire il faudra faire un merge de origin/master sur la branche locale master.

Lorsqu'on est positionné sur une branche suivie, on peut faire référence à la branche amont via *{@upstream} ou {@u}**. Par exemple en étant positionné sur master, si l'on souhaite fusionner les modification apportées sur la branche amont origin/master (récupérées précédemment par un fetch), les trois commandes ci-dessous sont équivalentes:

git merge origin/master
 
# Equivalent
git merge {@upstrem}
 
# Equivalent
git merge {@u}

Pour apporter des modifications sur une branche du serveur amont il faut créer une branche locale paramétrée pour suivre la branche amont

# Création d'une branche locale qui suit la
# branche amont "feature01" 
git checkout -b feature01 origin/feauture01
 
# Equivalent
$ git branch --track origin/feature01

La commande précédente aboutie à la création d'une branche locale nommée 'feature01' ayant pour branche amont 'origin/feature01'. On peut alors se positionner sur la branche locale “feature01” apporter les modifications souhaitées et enfin pousser sur le serveur distant quand le moment est venu.

L’extraction d’une branche locale à partir d’une branche distante crée automatiquement ce qu’on appelle une “branche de suivi” (tracking branch) et la branche qu’elle suit est appelée “branche amont” (upstream branch). Les branches de suivi sont des branches locales qui sont en relation directe avec une branche distante. Si vous vous trouvez sur une branche de suivi et que vous tapez git push, Git sélectionne automatiquement le serveur vers lequel pousser vos modifications.

# Crée automatiquement une branche locale de suivi de "origin/hotfix41"
git checkout hotfix41

Pour afficher les branches de suivi configurées dans le dépôt courant :

git fetch --all
git branch -a -vv

Pousser une branche sur le serveur Amont

Lorsqu'on crée une branche elle n'existe que localement. Si on souhaite pousser les commits portés par cette branche sur le serveur amont, il faut le faire explicitement :

# Pousse la branche locale "feature02" sur le serveur amont "origin"
git push --set-upstream origin feature02

Supprimer des branches

Pour supprimer une branche locale “feature02”:

git branch -d feature02

Pour supprimer une branche distante “feature33” présente sur le serveur amont “origin” :

git push origin --delete feature33

Labels standards

proposed, pu (proposed update), feature Ajout de fonctionnalité
issue, iss, hotfix Correction
dev/git/branches.txt · Dernière modification : 2023/09/15 16:35 de yoann