Les systèmes de versionning sont l’un des outils principaux utilisés lors d’un développement collaboratif, ce qui est le cas dans le DevOps et le Big Data en général. Et dans la plupart des systèmes de gestion de version, on trouve la fonctionnalité de branching. Avec Git, vous aurez à tout moment besoin de cette fonctionnalité, quelle que soit la modification que vous souhaitez ajouter. En effet, lors d’une correction de bug dans un projet Git, vous devriez créer une branche pour encapsuler vos changements. La commande git branch vous permettra d’effectuer cette création.

Dans cet article, nous allons découvrir la commande git branch dans sa totalité ainsi que les différents modèles de création de branches git.

Qu’est-ce qu’une branche Git ?

schema-branche-git

Sur ce schéma, il y a deux lignes de développement différentes. L’une a une fonctionnalité à court terme et l’autre a une fonctionnalité à long terme. Avec la fonctionnalité des branches, les développeurs peuvent travailler chacun de leurs côtés sans avoir peur de mettre de codes douteux dans la branche principale.

L’implémentation des branches sur les autres systèmes de gestion de version est un peu plus lourde qu’avec Git. 

En effet, les autres systèmes copient les fichiers de répertoire en répertoire. Git, quant à lui, stocke une branche comme une référence à un commit (un commit est un instantané ou étape cruciale dans la chronologie d’un projet git).

Donc, une branche représente la pointe d’une série de commits. Pour avoir l’historique d’une branche, il faut extrapoler les relations entre les commits.

Fonctionnement de la commande git branch

Une branche désigne une ligne de développement à part entière. Pour mieux comprendre cela, vous pouvez considérer une branche comme un nouveau dossier de travail, une nouvelle zone de staging et un nouvel historique de projet.

Les étapes du travail sont sauvegardées dans l’historique de la nouvelle branche et cela entraîne la génération d’un fork dans l’historique du projet.

C’est la commande git branch qui aide à créer, répertorier, renommer et supprimer des branches. Toutefois, elle ne permet pas de passer d’une branche à une autre ni de reconstituer un historique forké.  C’est pour cette raison que la commande git branch est très liée aux commandes git checkout et git merge.

Comment créer une branche ?

Il faut savoir que les branches ne sont rien d’autre que des pointeurs vers des commits. Donc, quand on crée une nouvelle branche, Git crée tout simplement un nouveau pointeur et ne modifie pas le dépôt.

Considérons un dépôt qui ressemble à ceci :

exemple-depot

On va créer une branche avec la commande suivante :

git branch dev1
creation-git-branch

La commande ci-dessus crée simplement les branches. Pour ajouter des commits, il faut se rendre sur la branche avec la commande git checkout puis lancer les commandes git add et git commit standard.

Pour lister les branches présentes dans un projet, il faut lancer la commande suivante :

git branch
lister-branche

Création d’une branche en local

Ici, la branche principale est la branche master et l’on va créer la branche dev1

creation d'une branche git

Ensuite, on va sélectionner la nouvelle branche en exécutant la commande suivante :

git checkout dev1
git-checkout-dev1

Comme vous pouvez le constater, on est passé de la branche principale master à la branche dev1. Maintenant, on va exécuter les commandes

git add . 

et

git commit
git-add-git-commit

Sur le retour, on remarque qu’il n’y a aucune activité faite sur la branche.

Création d’une branche distante

Le cas précédent illustre la création d’une branche en local. Cependant, avec git branch, il est également possible de créer des branches distantes. Mais avant de faire cela, on doit d’abord créer un dépôt distant.

Pour ce faire,  il faut se rendre sur son compte GitHub et créer un nouveau dossier.

new-repository

Ensuite, on va pousser notre dépôt local sur le GitHub.

depot-local-vers-depot-distant

Pour cela, nous allons copier le lien ci-dessus puis exécuter le code suivant : 

git remote add origin https://github.com/BKISSEL/les-branches.git
git-remote-add-origin

Et enfin, avec la commande git push, on va pouvoir pousser le dépôt sur le serveur distant.

git-push

Suppression de branches

Quand vous en avez terminé avec une branche et que vous souhaitez la supprimer sans perdre l’historique, il faut taper :

git branch -d 

Cette commande émettra le message d’erreur suivant si la branche n’est pas mergée :

error: The branch ‘crazy-experiment’ is not fully merged. If you are sure you want to delete it, run ‘git branch -D crazy-experiment’.

Vous pouvez forcer la suppression d’une branche, quel que soit son état en utilisant la lettre D. La commande supprimera la branche sans émettre d’avertissement. Voici la manière de formuler cette commande :

git branch -D 

Maintenant, pour supprimer les branches dans les dépôts distants, il faut exécuter l’une des commandes suivantes :

git push origin --delete 

ou

git push origin:

Ces commandes effectuent d’abord un push d’un signal de suppression vers le serveur où se trouve le dépôt, ce qui va déclencher la suppression.

Quelques options importantes

1)    -v -a

En ajoutant ces deux lettres sur votre commande, vous obtiendrez plus d’informations sur vos branches. Par défaut, la commande n’affiche que les branches locales.

L’option -a garanti que les branches distantes soient incluses dans la liste.

L’option -v permet d’obtenir les informations concernant les sujets de validation des derniers commits sur vos branches.

git-branch-a-v

1)    – – no –merged

Cette option permet de trouver les branches non fusionnées dans la branche HEAD. Cela a pour but de vous aider à connaître l’état de l’évolution du travail. Vous pouvez également faire l’inverse pour obtenir toutes les branches fusionnées grâce à l’option – – merged.

1)    – m

Cette option permet de renommer la branche.

Comment créer une branche d’urgence ?

Imaginez que vous n’en avez pas encore fini avec le projet et qu’il y ait une erreur à corriger sur l’un des fichiers de votre projet depuis la branche principale. Dans ce cas, pour le corriger, il est très judicieux de ne pas mener la correction directement sur la branche principale, mais de créer une nouvelle branche pour pouvoir corriger cette erreur.

Pour ce faire, il faut taper la commande suivante :

git checkout -b urgence

Une fois la branche d’urgence créée, vous pouvez apporter la correction aux fichiers concernés. Ensuite, vous pouvez le valider avec un git add nom_fichier.

Mais qu’est-ce qui différencie la commande git checkout -b de git branch <non_branche> ?

Différence entre git branch <nom_branche> et git checkout -b

La commande git checkout permet non seulement de passer d’une branche à une autre, mais aussi de créer une branche. Avec l’option -b à l’appui, la commande servira à créer et à changer de branche simultanément. 

La commande git checkout -b effectue deux opérations. La première est le lancement de git branch <nom_branche> et la deuxième opération est l’exécution de la commande git checkout <nom_branche>.

La commande git branch, quant à elle, crée tout simplement la branche.

Voilà, nous sommes arrivés à la fin de cet article. En conclusion, la commande git branch est incontournable lorsqu’il s’agit de la gestion de n’importe quel aspect d’une branche. En effet, on l’utilise que ce soit pour la création ou la suppression des branches dans un référentiel local ou distant. Vous allez donc souvent le rencontrer si vous travaillez dans le domaine du développement collaboratif.

Si vous souhaitez en apprendre davantage sur le Big Data et le développement informatique en général, vous pouvez parcourir notre blog. Nous vous invitons également à télécharger cette formation sur le Data Engineering qui vous permettra de développer des applications Spark avec Scala.


Juvénal JVC

Juvénal est spécialisé depuis 2011 dans la valorisation à large échelle des données. Son but est d'aider les professionnels de la data à développer les compétences indispensables pour réussir dans le Big Data. Il travaille actuellement comme Lead Data Engineer auprès des grands comptes. Lorsqu'il n'est pas en voyage, Juvénal rédige des livres ou est en train de préparer la sortie d'un de  ses livres. Vous pouvez télécharger un extrait de son dernier livre en date ici : https://www.data-transitionnumerique.com/extrait-ecosystme-hadoop/

>