Le phénomène Big Data a entraîné la production d’une quantité astronomique de données. Le traitement de ces informations est crucial pour que l’entreprise puisse en tirer profit lors de la prise de décision. Cependant, ce traitement nécessite l’intervention de plusieurs personnes telle que les Data Engineer, les Data Scientist, etc. Certaines d’entre elles doivent collaborer lors de la mise en place des solutions Data nécessaires et c’est là que Git et GitHub entrent en jeu.

Git et GitHub sont des logiciels de gestion de projet facilitant la collaboration entre les développeurs que ce soit en Big Data ou dans le développement informatique en général. Ils permettent aux différentes personnes travaillant sur le même projet de se mettre au même niveau d’information. Chaque intervenant peut donc voir les modifications apportées aux différentes versions du projet, les tâches réalisées et les tâches restantes. La maîtrise de Git et GitHub est une compétence clé de la gestion de projet Data.

Dans cet article, nous allons découvrir pourquoi et comment travailler avec ces logiciels. Nous allons également voir la différence entre ces deux outils. 

Historique

Avant d’entrer dans le vif du sujet, revenons un peu sur l’histoire de Git et GitHub.

Comme toutes les révolutions extraordinaires que l’on a pu apercevoir, Git a été créé pour pallier à un problème.

Si l’on remonte un peu ses origines, le noyau Linux de ces logiciels fut un projet libre de très grande taille. De 1991 à 2002, les modifications étaient envoyées sous forme de patchs et d’archives de fichiers. Ce n’est qu’en 2002 que le projet Linux utilise un DVCS propriétaire appelé BitKeeper.

En 2005, les relations sont devenues tendues entre la communauté développant le noyau Linux et la société qui se charge du développement de BitKeeper. Suite à cela, les accords entre les deux parties sont rompus. C’est ainsi que Linus Torvalds, le créateur de Linux, décide de développer son propre outil : Git. Les objectifs de ce dernier étaient le suivant :

  • Vitesse ;
  • Conception simple ;
  • Support pour le développement non linéaire (milliers de branches parallèles) ;
  • Complément distribué ;
  • Capacité à gérer des projets de grande taille.

Depuis sa création en 2005, Git n’a cessé d’évoluer et a été amélioré pour être plus facile à utiliser. Il possède désormais un incroyable système de branche. 

GitHub, quant à lui, a été lancé en 2008. Il repose sur Git et c’est une plateforme open source de gestion de version de projet.

Git

Dans cette section, nous allons entrer de plus en plus dans les détails de cet article. Commençons cela par la découverte de toutes les facettes de Git.

Git : Définition

Comme nous l’avons mentionné précédemment, Git a été créé en 2005. Il s’agit d’un logiciel de versioning, c’est-à-dire qu’il conserve toutes les modifications apportées à un logiciel lors de son développement.

Grâce à Git, un professionnel de data ou de la programmation informatique peut rapidement revenir sur une ancienne version de projet en cours de développement si le besoin se fait sentir. Git est décentralisé, c’est-à-dire chaque développeur du projet possède son historique de code source.

Installation de Git

La manière la plus simple pour installer Git est de télécharger la dernière version sur le site officiel et de suivre les instructions.

Si vous êtes sur un système Windows, il faut télécharger une version spécifique. Dans celle-ci, il y a un outil qui permet d’émuler le comportement du Bash. 

Paramétrage de Git

Un petit paramétrage est nécessaire après l’installation de Git. On va commencer par renseigner un nom d’utilisateur et une adresse mail. Pour réaliser cela, il faut se servir de la commande git config. Cette commande permet d’avoir un contrôle sur les variables de configuration de Git.

Nous allons également personnaliser les options par défaut de certaines commandes grâce à une option –global. Cette option va permettre de fournir le nom d’utilisateur et le mail qui va être utilisé pour tout projet Git.

Commençons par les commandes suivantes :

git config --global user.name “” 

et

git config --global user.email 
git-config

Alors, pour savoir si les modifications ont été bien effectuées, il faut taper les commandes suivantes :

git config --user.name

et

git config --user.email
get-user-email

Le fonctionnement de Git

Cette partie est la plus importante, car elle couvre les commandes de base à connaître pour travailler avec Git. 

Démarrer un dépôt Git

Il existe deux façons de démarrer un dépôt. La première est d’importer un projet ou un répertoire existant dans le Git. La deuxième est simplement de cloner un dépôt Git existant sur un serveur différent. Voyons ces deux méthodes une par une.

Initialisation d’un dépôt Git dans un répertoire existant

Si vous voulez importer un projet existant dans git, alors positionnez-vous dans le répertoire du projet puis tapez la commande suivante :

git init

Cette commande va créer un sous-répertoire nommé .git qui comportera tous les fichiers nécessaires au dépôt. 

Cloner un dépôt existant 

Si vous souhaitez plutôt obtenir une copie du projet, la commande à utiliser est :

git clone

En tapant cette commande, Git aura la copie complète des données du projet c’est-à-dire toutes les versions des fichiers et l’ensemble de l’historique.

Enregistrer des modifications dans le dépôt

Si vous possédez déjà un dépôt Git valide ou une copie du projet, vous devez effectuer quelques modifications. Vous allez ensuite valider les instantanés de ces modifications dans votre dépôt.

Pour comprendre comment Git fait pour suivre les modifications sur les fichiers d’un projet, il faut savoir que chaque fichier peut avoir deux états.  Il peut être sous suivi de version ou non suivi. 

Un fichier possède un état suivi lorsqu’il est enregistré dans la base. Et tout fichier non indexé est considéré comme non suivi.

Tous les fichiers sont par défaut sous suivi de version si vous clonez un dépôt, car cela copie tout l’historique du projet.

Un fichier suivi peut à son tour avoir trois états :

  • Modifié (modified) ;
  • Indexé (staged) ;
  • Validé (committed).

On demande à Git de valider tous les fichiers d’un projet quand on démarre un dépôt Git à partir d’un dépôt local. On dit qu’un fichier est valide lorsqu’il est enregistré dans la base de données locale.

Par la suite, en travaillant sur le projet, vous pouvez modifier certains fichiers ou même en ajouter des nouveaux. Git va considérer les fichiers modifiés comme modifié et les nouveaux comme non suivi.

Lorsque le fichier modifié ou ajouté fait partie du dépôt Git, on dit qu’il est indexé.

Les commandes Git à savoir 

De nos jours, Git est le système de gestion le plus performant et pertinent. Il est utilisé par des millions d’entreprises dans le monde pour gérer leur code. Voici les commandes à absolument connaître afin de bien utiliser Git.

Git config

Elle fait partie des commandes les plus utilisées. On l’utilise pour paramétrer les préférences de l’utilisateur telles que le nom d’utilisateur, le mail, le format de fichier, etc. Par exemple, pour définir l’email d’un utilisateur, on tape le code suivant : 

git config --global user.email sam@google.com

Git init

C’est la commande que l’on utilise pour créer un nouveau dépôt Git. Elle ressemble à ceci :

git init 

Git add

Cette commande permet d’ajouter des fichiers à l’index. Par exemple, pour ajouter un fichier nommé temp.txt dans le répertoire local de l’index, il faut taper :

git add temp.txt

Git clone

Cette commande est utilisée pour vérifier les dépôts. Si le dépôt se trouve dans un autre serveur, il faut exécuter la commande suivante :

git clone alex@93.188.160.58:/chemin/vers/dépôt

Et si le dépôt se trouve sur votre serveur local, il faut taper cette commande :

git clone /chemin/vers/dépôt

Git commit

Si une modification a été faite au HEAD, c’est la commande git commit qui permettra de la valider.

git commit –m “Description_du_commit”

Git status

Cette commande est utilisée pour voir l’état des fichiers. Par exemple, afficher la liste des fichiers modifiés de même que les fichiers à ajouter ou valider. 

git status

Git push

Cette commande est utilisée pour partager ou envoyer les modifications faites en local dans la branche principale associée. Voici sa syntaxe : 

git push origin master

Git checkout

Pour créer une branche ou passer d’une branche à une autre, il faut passer par la commande git checkout suivante :

command git checkout -b 

Pour passer d’une branche à une autre, il faut exécuter celle-ci :

git checkout 

Git remote

C’est avec cette commande qu’un utilisateur peut se connecter à un dépôt distant. La commande qui suit liste les dépôts distants actuellement configurés :

git remote –v

Elle permet aussi de connecter un dépôt local à un serveur distant comme suit :

git remote add origin 

Git branch 

Elle est utilisée pour créer, lister ou supprimer des branches. Pour lister toutes les branches présentes dans le dépôt il faut taper la commande suivante :

git branch

Pour supprimer une branche, voici la commande à utiliser :

git branch –d 

Git pull

La commande git pull est utilisée pour réunir les modifications présentes sur le dépôt distant dans le dossier local :

git pull

Git merge

Elle est utilisée pour la fusion d’une branche à une autre branche active :

git merge 

Git diff

Celle-ci permet de lister ou de visualiser les conflits d’un fichier :

git diff --base 

Elle est également utilisée pour voir les conflits entre les différentes branches avant de les fusionner :

git diff  

Pour voir tous les conflits actuels, il faut exécuter la commande suivante :

git diff

Git rm

Cette commande est utilisée pour supprimer des fichiers de l’index et du répertoire de travail :

git rm nomfichier.txt

Git reset

Elle est utilisée pour mettre l’index et le répertoire du fichier à l’état initial :

git reset --hard HEAD

Git show

Elle permet d’obtenir des informations sur tout fichier git :

git show

Git switch

La commande switch a été introduite dernièrement. Son but est de passer d’une branche à une autre.

Git flow

Git flow est une commande servant aussi à créer des branches. Elle permet de faciliter la gestion des versions. Cette dernière a été créée en 2010 par le développeur de logiciel Vincent Driessen.

Git fetch

Cette commande permet d’extraire tous les fichiers du dépôt distant qui ne sont pas encore sur le répertoire personnel de travail :

git fetch origin

Cas pratique avec Git

Initialiser le projet

Avant de commencer à travailler avec Git, il faut préalablement créer un répertoire pour stocker tous les fichiers du projet. Dans notre cas, on se rendra sur le bureau puis dans le dossier Projet pour le créer. On peut remarquer sur l’image ci-dessous que le dossier Projet est vide :

new-project-git

Une fois sur le bureau, on effectue un clic droit sur le dossier Projet :

git-bash

On aura par la suite cette interface :

project

Maintenant, on va initialiser le projet avec la commande

git init
git-init

Une fois que cette commande est exécutée et qu’il n’y a pas un fichier nommé .git sur votre répertoire de travail, il faut faire les actions sur l’image ci-dessous :

fichier-git

Si tout se passe bien, vous obtenez ceci :

Il faut ensuite passer à la configuration du projet. Ici, on va donner un nom d’utilisateur et un mail à notre projet avec les commandes

git config --global user.name BEKISSEL 

et

git config --global user.email bekisslngar@gmail.com
config-user

Puis, on crée un nouveau fichier nommé index.html dans notre répertoire de projet :

index
dossier-index

Ensuite, on va ouvrir le fichier index avec un éditeur de texte pour y ajouter le code HTML de notre projet :

fichier-index

On peut vérifier à ce stade le statut de notre projet avec la commande

git status
git-status

On voit qu’il a eu du changement sur le projet notamment la création du fichier index. Ce fichier n’est pas encore ajouté et sauvegardé dans le projet, on va l’ajouter grâce à la commande :

git-add

On va ensuite le sauvegarder avec la commande suivante :

git commit -m

Ce qui suit le paramètre -m est facultatif.

git-commit

Maintenant on va parler des branches de nos projets. Ici la branche master est la branche principale du projet alors nous allons ajouter une branche pour le développement et une branche pour les mises à jour. Cela est possible avec la commande git branch.

git-branch

Effectuer une modification

Maintenant si un développeur se met dans la branche dev et modifie le fichier index, le fichier index dans la branche master ne sera pas affecté par la modification. Pour changer de branche, il faut taper la commande

git checkout nom-branch
git-checkout

Une fois sur la branche, on va par exemple ajouter une balise h2 dans notre code :

ajout-h2

Après cela, on tape les commandes suivantes :

git add . 

et

git commit -m “Ajout de h2”
git-add-commit

Si l’on revient sur la branche et que l’on actualise, on aura :

index-modif

GitHub

Maintenant que vous savez créer un projet sur Git, on va voir comment le pousser sur GitHub. Mais tout d’abord, nous allons découvrir ce qu’est GitHub.

Définition de GitHub

GitHub est le plus grand hébergeur de dépôt de Git. Il dépend énormément de Git, car c’est lui qui va se charger de l’enregistrement des différentes modifications apportées sur un projet.

Dans le langage des systèmes de version, le serveur central dans lequel les fichiers sont enregistrés ainsi que les différentes versions du projet est appelé dépôt. GitHub héberge les référentiels Git tels que GitLab, Bitbucket et SourceForge.

La majeure partie des projets hébergés sur le serveur GitHub est publique, tout le monde a le droit de demander les codes et de les modifier. Il est gratuit pour des projets publics.

Les services proposés par GitHub

GitHub ne s’arrête pas seulement à l’hébergement des projets Git. En effet, il offre aussi d’autres possibilités intéressantes telles que :

  1. La proposition d’évolution pour un projet open source ;
  2. La possibilité d’accès au code source par d’autres développeurs ;
  3. La gestion des bugs liés au code source.

Les actions possibles sur GitHub

Sur GitHub, il existe trois principales actions possibles face à un code d’un autre développeur :

  1. Merge : donne le droit aux propriétaires de modifier leurs projets ;
  2. Fork : donne la possibilité de copier le code et de le modifier ;
  3. Pull : donne la possibilité de partager le code modifié.

Inscription sur GitHub

Il existe des plans gratuits et payants pour obtenir un compte GitHub. Cependant, le plan gratuit donne un accès illimité aux repository de logiciel public et privé. Vous pouvez aussi collaborer avec au maximum 3 utilisateurs. Pour s’inscrire, il faut suivre les étapes suivantes :

Première étape

Rendez-vous sur le site  https://github.com/join

Deuxième étape

Remplissez les formalités avec vos informations personnelles et cliquez sur le bouton créer un compte.

creer-compte-github

Troisième étape

Cliquez sur le bouton join a free plan.

github-free

Travailler avec un dépôt distant comme GitHub

Avant de se lancer sur un projet collaboratif, il faut savoir gérer les dépôts distants. Les dépôts distants ne sont rien d’autre que vos différentes versions de projet hébergées sur internet ou sur un réseau d’entreprise. 

Travailler sur un projet avec d’autres personnes consiste à connaître la gestion des dépôts distants. Il faut savoir récupérer ou envoyer des données sur les dépôts distants lorsque vous souhaitez partager votre travail. 

En bref, gérer un dépôt distant veut dire que vous connaissez des ajouts de dépôts distants, effacer des dépôts distants et aussi savoir gérer des branches distantes. Ne vous inquiétez pas, nous allons vous montrer la manière de procéder.

Afficher les dépôts distants

Pour afficher les serveurs distants préenregistrés, il faut lancer la commande git remote. Si vous avez cloné un dépôt, Git lui donnera un nom par défaut. Il est également important de voir son origine :

$ git clone https://github.com/schacon/ticgit
Clonage dans 'ticgit'...
remote: Counting objects: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Réception d'objets: 100% (1857/1857), 374.35 KiB | 243.00 KiB/s, fait.
Résolution des deltas: 100% (772/772), fait.
Vérification de la connectivité... fait.
$ cd ticgit
$ git remote
origin

Avec la commande git remote -v, vous pouvez voir l’URL que Git a définie pour chaque nom.

Si vous avez beaucoup de dépôt distant et que vous voulez les lister, il faut exécuter la commande :

$ cd grit
$ git remote -v

Avec cette commande, vous avez la possibilité de voir les modifications apportées par les différents collaborateurs.

Ajouter des dépôts distants

Pour ajouter un nouveau dépôt, lancer la commande suivante :

git remote add [nom_court] [url]

Le mot-clé pb peut être utilisé à la place l’URL, ce qui raccourcit la commande. Par exemple, si vous avez juste besoin de voir les informations qu’un développeur dispose et que vous ne souhaitez pas l’avoir dans votre branche il faut lancer la commande suivante :

$ git fetch pb

Une fois cette commande exécutée, la branche master du développeur en question est disponible depuis votre serveur local. Il est également possible de la fusionner avec une autre branche.

Récupérer et trier des données depuis des dépôts distants

Pour obtenir des données du dépôt distant, il faut lancer la commande suivante :

$ git fetch [remote-name]

Cette commande permet de récupérer toutes les données du projet que vous ne possédez pas encore. Ainsi, vous pouvez modifier ou inspecter toutes les branches contenues dans ce dépôt.

Pousser son travail sur un dépôt distant

Quand vous êtes déjà prêt à partager votre travail, il faut le pousser vers le serveur distant. La commande pour cela est simple à savoir :

git push  

Par exemple, pour pousser la branche master vers le serveur origin il faut exécuter la commande suivante :

git push origin master

Cette commande ne marche que lorsque vous avez des droits d’accès en écriture et qu’aucune autre personne ne pousse aussi son travail au même moment que vous.

Inspecter un dépôt distant

Si vous souhaitez avoir plus d’informations sur le dépôt distant, vous pouvez utiliser la commande suivante :

git remote show [nom-distant]

On obtient comme résultat la liste des URL de dépôt distant ainsi que la liste des branches distantes suivie.

Renommer des dépôts distants

Pour modifier un nom court d’un dépôt distant, il faut taper la commande :

git remote rename

Par exemple, dans notre cas, on souhaite renommer pb en Paul il faut exécuter cette commande :

$ git remote rename pb paul
$ git remote
origin
paul

Il faut noter que cette action ne modifie pas seulement le nom du dépôt, mais aussi les noms des branches distantes référencées sous pb/master.

Retirer un dépôt distant

Vous pouvez décider de retirer le dépôt distant pour une raison ou une autre. Pour cela, il faut utiliser la commande suivante :

git remote rm
$ git remote rm paul
$ git remote
origin

Cela supprime aussi toutes les branches de suivi à distance et les réglages de configurations effectuées sur ce dépôt.

Cas pratique : création d’un projet sur GitHub et l’envoi d’un projet Git sur GitHub

Nous allons maintenant passer à un exemple concret de la manière de travailler sur GitHub.

Création d’un projet sur GitHub

Pour créer un projet sur GitHub, il faut se rendre sur le site de GitHub puis cliquer sur New repository.

new-repository

Ensuite, on doit donner un nom et une description à votre projet, la description est facultative. 

nom-projet

Nous allons cliquer sur créer une fois les informations remplies.

Pousser le projet Git sur GitHub

Sous l’onglet Code de votre projet, vous allez retrouver le lien de ce dernier.

pousser-projet

Il va falloir copier ce lien et ajouter dans le projet Git avec la commande suivante :

$ git remote add origin https://github.com/BKISSEL/Projet.git
add-origin

Avec la commande $ git remote -v, on peut vérifier les valeurs de notre repository.

git-remote

Maintenant, on va pousser le projet sur GitHub. Cela peut prendre quelques minutes avant de s’effectuer, car il va envoyer tous les fichiers et les historiques du projet. Mais avant cela, il faut autoriser la connexion entre Git et GitHub

git-to-github
git-push

Après quelques instants, on peut actualiser la page et on verra que le fichier index de notre Projet se trouve bien sur notre repository.

resultat-push

Aperçue de la plateforme GitLab

GitLab est une plateforme de travail collaboratif open source présentée sous la forme d’une application unique. Cette plateforme est un grand atout dans le domaine du développement, de la sécurité et du travail en équipe. La plateforme fait tout, elle permet d’effectuer des tests et de déployer plus rapidement des logiciels. Elle intervient aussi dans la planification des projets et la gestion de code source.

Les fonctionnalités de Gitlab 

GitLab offre plusieurs fonctionnalités intéressantes telles que :

La gestion du code source

Vous pouvez coordonner les différentes tâches, suivre et vérifier les modifications. Elle facilite les contrôles du code et la gestion de la distribution depuis une seule interface.

La gestion de projet agile

GitLab offre la possibilité d’apporter une transparence dans la réalisation d’un projet. Le but est de respecter les délais et le budget fixés. Gérer les échanges entre les différentes équipes avec des tableaux kanban et des feuilles de route est également possible grâce à GitLab. 

Intégration et distribution continues

Avec le CI/CD de GitLab, vous pouvez créer des applications, améliorer la transformation numérique, décloisonner les différents services et augmenter l’efficacité.

GitLab CI/CD est un outil GitLab créé pour gérer l’intégration et le déploiement en continu de code. L’intégration et le déploiement continu sont essentiels lorsque l’on travaille dans le DevOps. Pour utiliser cet outil il faut d’abord configurer le fichier nommé .gitlab-ci.yml qui se trouve dans le répertoire root.

DevSecOps

Le système de sécurité est intégré et prêt à l’emploi. Chaque bout de code est analysé de manière automatique dans le but de corriger les erreurs et détecter les vulnérabilités existantes dans le code et les dépendances associées.

Installation de GitLab

GitLab est comme une autre option de GitHub. Elle peut être installée en local ou via un serveur web. On peut aussi passer par une machine virtuelle pour effectuer cette installation.

Les avantages de Git et GitHub

Git et GitHub sont vraiment importants dans le monde du développement informatique. Ils permettent de résoudre les erreurs qui se produisent au cours du développement. Les deux logiciels aident à rester à jour, car ils sauvegardent les modifications apportées à chaque version de projet. Ils permettent également de se tenir au courant des tâches accomplies et celle qui reste à faire.

À la différence des autres systèmes de contrôle de version, ils sauvegardent à chaque instant les modifications et ne les répertorient pas comme une liste. Cela permet aux développeurs de revenir sur une ancienne version en instantané dès que le besoin se fait ressentir.

La différence entre Git et GitHub

Ces deux outils sont très souvent confondus et très souvent considérés comme la même chose alors qu’il existe bel et bien des points de divergence.

Les fonctionnalités de git et GitHub

Git est un logiciel de Version de Control System dit logiciel de VSC. Il aide les professionnels de la data et les développeurs à enregistrer l’historique de leurs travaux en local. 

GitHub est plutôt une plateforme web qui intègre les fonctionnalités de VSC de Git. Cela permet aux professionnels de collaborer sur des projets stockés sur un serveur distant.

Avec Git, les collaborateurs ont la facilité de revenir sur les anciennes versions de leur travail. Avec la plateforme GitHub, les anciennes versions de projet sont sauvegardées dans un cloud pour permettre aux développeurs de travailler sur un même projet et être au même niveau d’information.

GitHub permet d’attribuer des tâches et de définir les autorisations et le rôle de chaque collaborateur. Les dépôts sur GitHub sont accessibles aux publics et tous développeurs, quelle que soit leur localisation dans le monde.

Les différents points de divergence entre Git et GitHub

Il existe plusieurs points divergents entre ces deux outils. Git est une base de données en ligne qui permet de stocker, suivre et partager son travail en dehors du serveur local. 

Avec GitHub, le travail est stocké dans un cloud et il s’agit d’un service à but lucratif. Malgré qu’il présente un plan gratuit qui intègre toutes les fonctionnalités de Git, GitHub offre des options supplémentaires. 

Il a une interface très intuitive qui aide les programmeurs à prendre facilement le contrôle et la gestion des tâches grâce aux différents outils présents sur l’interface.

Voilà, nous arrivons à la fin de cet article sur les outils Git, GitHub et GitLab. En résumé, que vous soyez nouveau ou non dans le monde du développement ou de la Data, vous ne pouvez pas vous passer de GitHub. Il y aura toujours un moment où vous devrez partager votre projet et travailler à plusieurs pour obtenir un meilleur résultat. Grâce à ces outils, vous avez la possibilité de voir les modifications apportées à votre code et de ne valider que celle qui vous intéresse.

Si vous souhaitez connaître d’autres outils essentiels au développement informatique, apprendre de nouveaux langages ou approfondir vos connaissances en Big Data, n’hésitez pas à parcourir notre blog. Nous vous invitons également à télécharger gratuitement notre formation sur 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/

>