
Qu'est-ce que Git ?
Git est un système de contrôle de version distribué et open source. Il permet aux développeurs et aux data scientists de suivre le code, de fusionner des modifications et de revenir à d'anciennes versions - AWS. Il vous permet de synchroniser les changements avec un serveur distant. Grâce à sa flexibilité et à sa popularité, Git est devenu un standard du secteur car il prend en charge quasiment tous les environnements de développement, les outils en ligne de commande et les systèmes d'exploitation.
Comment fonctionne Git ?
Git stocke vos fichiers et leur historique d'évolution dans un dépôt local. Chaque fois que vous enregistrez des modifications, Git crée un commit. Un commit est un instantané des fichiers à un moment donné. Ces commits sont reliés entre eux et forment un graphe d'historique de développement, comme ci-dessous. Il permet de revenir à un commit précédent, de comparer les changements et de suivre l'avancement du projet - Azure DevOps. Les commits sont identifiés par un hachage unique utilisé pour comparer et annuler les modifications.

Un graphe de l'historique de développement
Branches
Les branches sont des copies du code source qui évoluent en parallèle de la version principale. Pour enregistrer les changements réalisés, il faut fusionner la branche avec la version principale. Cette fonctionnalité encourage un travail d'équipe sans conflits. Chaque développeur a sa tâche ; grâce aux branches, il peut travailler sur une nouvelle fonctionnalité sans interférer avec ses collègues. Une fois la tâche terminée, vous pouvez fusionner la nouvelle fonctionnalité dans la version principale (branche master). Si vous souhaitez apprendre à cloner une branche, consultez ce tutoriel sur le clonage de branche Git.

Ajout d'une nouvelle fonctionnalité au dépôt
Commits
Dans Git, un fichier peut être dans trois états : modifié, indexé (staged) ou validé (commit). Quand vous modifiez un fichier, les changements sont enregistrés dans le répertoire local. Ils ne font pas encore partie de l'historique Git. Pour créer un commit, vous devez d'abord indexer les fichiers modifiés. Vous pouvez ajouter ou retirer des changements de la zone d'index, puis empaqueter ces modifications dans un commit avec un message descriptif.

Trois états des fichiers dans Git
Quels sont les avantages de Git ?
- Suivi des changements : il permet de consulter l'historique des modifications. L'historique facilite l'identification et la correction des bugs.
- Intégration IDE : grâce à sa popularité, l'intégration Git est disponible dans tous les environnements de développement, par exemple VSCode et JupyterLab.
- Collaboration d'équipe : une équipe peut suivre sa progression et, via les branches, travailler individuellement sur une tâche puis fusionner ses changements avec la version principale. Les pull requests, la résolution des conflits et la revue de code favorisent la collaboration.
- SCV distribué : dans un système distribué, il n'y a pas de stockage centralisé. Il existe plusieurs sauvegardes pour un même projet. Cette approche permet de travailler hors ligne et de valider des changements.
Git pour les projets de data science
Git offre le versioning des scripts, métriques, données et modèles. Avec l'extension git-lfs, vous pouvez stocker et versionner de gros jeux de données et des modèles de machine learning. Dans un projet type de data science, vous avez un notebook Jupyter, un jeu de données, un modèle, des métadonnées et des métriques de modèle. Les métadonnées incluent les fichiers d'informations sur le modèle de machine learning, les features, les hyperparamètres et les fichiers d'automatisation. Tout cela est nécessaire pour suivre l'évolution des applications d'IA et résoudre les problèmes.
Le suivi des expérimentations aide les scientifiques à revenir en arrière en cas de changement accidentel, à sélectionner la meilleure expérience en fonction des métriques de performance et à collaborer avec l'équipe. Le schéma ci-dessous montre comment des changements dans les données ou le code affectent les métadonnées et la sortie du modèle. Suivre ces changements peut aussi aider vos collègues à proposer une meilleure solution. Découvrez tout sur Git dans le dernier billet de Summer Worsley.

Git pour un projet de data science
Collaborer avec GitHub
GitHub est une plateforme cloud de développement logiciel. Elle est couramment utilisée pour stocker des fichiers, suivre les changements et collaborer sur des projets. Ces dernières années, GitHub est devenu la plateforme sociale la plus populaire pour les communautés du logiciel. Chacun peut contribuer aux projets open source et aux rapports de bugs, discuter de nouveaux projets et découvrir de nouveaux outils.
Les data scientists et les ingénieurs en machine learning suivent la voie des développeurs et intègrent leur workflow avec GitHub. Ainsi, ils peuvent partager leurs travaux, faciliter les contributions de la communauté et collaborer avec les équipes data. Vous trouverez sur la plateforme toutes sortes de projets, guides, tutoriels et ressources en data science et machine learning. Pour les étudiants, c'est une opportunité d'acquérir de l'expérience et, à terme, de décrocher un poste dans une entreprise de premier plan.
Portfolio
La plupart des recruteurs techniques demandent des projets de portfolio ou un profil GitHub. Cela les aide à évaluer l'adéquation du candidat. Il est vivement recommandé de créer un profil GitHub et de le mettre à jour régulièrement. Les responsables du recrutement recherchent des profils expérimentés en développement logiciel et actifs sur des projets open source. L'analyse d'un portfolio GitHub les aide aussi à préparer les questions pour les entretiens techniques.

Profil GitHub
GitHub permet aux data scientists de mettre en valeur leurs projets, et cela peut compter comme expérience professionnelle sur votre CV. Mettre en avant des projets de portfolio crée aussi des opportunités de collaboration, de lancement de startup et de travaux de recherche.

Projets de portfolio
Fonctionnalités
GitHub propose également de nombreuses fonctionnalités tout aussi importantes que la mise en valeur d'un portfolio. Il est utile de les connaître pour les intégrer à vos projets de data science.
- Open source : GitHub offre un écosystème complet pour les projets open source. Vous pouvez sponsoriser des maintainers, contribuer à un projet, utiliser un outil open source dans un projet existant et promouvoir votre travail.
- Collaboration communautaire : GitHub est devenu une plateforme d'échanges autour des issues, des demandes de fonctionnalités, des contributions au code et à la documentation.
- Explore : l'onglet GitHub Explore vous aide à découvrir de nouveaux projets, des outils tendances et des événements développeurs.
- GitHub Gists : vous pouvez partager des extraits de code ou les intégrer dans un blog ou un site web.
- GitHub CLI : permet d'effectuer des pull requests, de relire du code, de consulter les issues et de suivre l'avancement depuis la ligne de commande.
- Stockage gratuit : dépôts privés et publics illimités.
- Hébergement web : vous pouvez publier votre site de portfolio ou votre documentation. GitHub Pages facilite la création et le déploiement d'un site.
- Codespaces : un environnement de développement cloud intégré à votre dépôt GitHub.
- Projects : un outil personnalisable et flexible pour planifier et suivre le travail sur GitHub.
- Automatisation : GitHub Actions automatise le workflow de développement : build, test, publication, release et déploiement.
- Sponsor : vous pouvez soutenir vos projets ou développeurs open source préférés par un paiement mensuel ou unique. Les développeurs peuvent aussi utiliser des plateformes tierces comme ko-fi.
Commandes de base
Avant de gérer des projets de data science, voyons les commandes Git les plus courantes que vous utiliserez dans tous vos projets. Les commandes de base incluent l'initialisation d'un dépôt Git, l'enregistrement des changements, la consultation des logs, l'envoi des modifications vers le serveur distant et la fusion.
-
git initcrée un dépôt Git dans un répertoire local. -
git clone <adresse-dépôt-distant>: copie l'intégralité d'un dépôt depuis un serveur distant vers un répertoire local. Peut aussi cloner un dépôt local. -
git add <fichier.txt>: ajoute un fichier, plusieurs fichiers ou dossiers à la zone d'index. -
git commit –m “Message”: crée un instantané des changements et l'enregistre dans le dépôt. -
git configsert à définir des configurations utilisateur comme l'email, le nom et le format des fichiers. -
git statusaffiche la liste des fichiers modifiés ou en attente d'indexation et de commit. -
git push <nom-distant> <nom-branche>: envoie les commits locaux vers la branche distante du dépôt. -
git checkout -b <nom-branche>: crée une nouvelle branche et bascule dessus. -
git remote –v: affiche tous les dépôts distants. -
git remote add <nom-distant> <hôte-ou-URL-distant>: ajoute un serveur distant au dépôt local. -
git branch –d <nom-branche>: supprime une branche. -
git pull fusionnedes commits depuis un dépôt distant vers le répertoire local. -
git merge <nom-branche>: après résolution des conflits, fusionne la branche sélectionnée dans la branche courante. -
git logaffiche la liste détaillée des commits de la branche actuelle.

Développement complet avec GitHub
Si vous souhaitez apprendre d'autres commandes, consultez notre fiche mémo Git.
Premiers pas
Dans cette section, nous allons utiliser Git pour suivre un projet de data science et GitHub comme dépôt distant. Nous verrons comment installer Git, créer et cloner un dépôt depuis GitHub, lancer des expériences de machine learning et pousser les changements (notebook, modèle, données) vers GitHub avec Windows PowerShell 7.
Installer Git
Git prend en charge tous les systèmes d'exploitation. Vous pouvez l'installer via des outils en ligne de commande ou en téléchargeant et exécutant directement l'installateur.
Linux
Pour les systèmes Debian/Ubuntu, utilisez `apt-get install git`, et si vous utilisez une autre distribution Linux, retrouvez la liste complète des commandes d'installation ici.
macOS
Si vous avez installé homebrew, utilisez cette commande pour télécharger et installer Git : `brew install git`. Vous pouvez aussi télécharger l'installateur binaire et lancer l'installation.
Windows
L'installation de Git sur Windows est simple. Rendez-vous sur la page de téléchargement, cliquez sur votre version de Windows, puis téléchargez et installez. Si vous avez l'outil winget, vous pouvez installer en tapant winget install --id Git.Git -e --source winget dans PowerShell.
Après l'installation de Git, assurez-vous d'avoir configuré le nom d'utilisateur et l'adresse email. Ces informations servent à signer les commits.
git config --global user.name "your-user-name"
git config --global user.email "your@email.com"
Pour des informations plus détaillées sur l'installation de Git, cliquez ici.
Initialiser le projet
Si vous avez un compte GitHub, cliquez sur le bouton + et sélectionnez nouveau dépôt. Saisissez ensuite le nom du dépôt et une brève description. Un dépôt public vide sera créé.

Création du projet
Il existe plusieurs façons de cloner des dépôts distants en local, et GitHub propose un guide détaillé pour cloner, ajouter un distant et initialiser un projet Git.

Clonage GitHub
Nous pouvons simplement cloner le dépôt en fournissant un lien HTTPS. Assurez-vous d'être dans le répertoire de travail via l'invite de commande ou PowerShell.
git clone https://github.com/kingabzpro/DataCamp-Git.git
>>> Clonage dans 'DataCamp-Git'...
>>> warning: Vous semblez avoir cloné un dépôt vide.
cd .\DataCamp-Git\
OU
Créez un nouveau répertoire appelé “DataCamp-Git” et initialisez Git avec une simple commande. Ensuite, ajoutez la connexion au dépôt distant pour pouvoir synchroniser votre travail avec GitHub.
mkdir DataCamp-Git
cd .\DataCamp-Git
git init
>>> Dépôt Git vide initialisé dans C:/Repository/GitHub/DataCamp-Git/.git/
git remote add origin https://github.com/kingabzpro/DataCamp-Git.git
OU
Si vous avez déjà un projet dans un répertoire, initialisez simplement Git avec `git init` et ajoutez le distant GitHub comme ci-dessus.
Commit simple
Avant d'ajouter des fichiers au dépôt, vérifiez que vous êtes dans le bon répertoire local.
Nous allons commencer simplement en créant un fichier README avec le titre DataCamp-Git. Puis nous l'ajouterons à la zone d'index avec `git add`.
echo "# DataCamp-Git" >> README.md
git add README.md
La commande git status indique que nous sommes sur la branche main et que le fichier `README.md` est indexé et prêt à être validé.
git status
>>> Sur la branche main
>>> Aucun commit pour l'instant
>>> Modifications qui seront validées :
(utilisez "git rm --cached <fichier>..." pour désindexer)
new file: README.md
Pour créer notre premier commit, nous utilisons `git commit` avec un message. Comme on peut le voir, le premier commit a été ajouté sous le hash ed9c886.
git commit -m "first commit"
>>> [main (root-commit) ed9c886] first commit
>>> 1 file changed, 1 insertion(+)
>>> create mode 100644 README.md
Ajouter les fichiers du projet
Nous allons utiliser l'espace de travail DataCamp MasterCard Stock Price with LSTM and GRU et télécharger les fichiers. L'auteur du projet a prétraité les données et entraîné des séries temporelles avec les modèles LSTM et GRU. Pour en savoir plus, lisez le tutoriel sur les réseaux de neurones récurrents (RNN).
Pour enregistrer le modèle, nous avons ajouté une nouvelle cellule de code dans le notebook Jupyter du projet. Le nouveau script crée un répertoire “model” et enregistre les modèles LSTM et GRU.
!mkdir -p model
model_lstm.save('model/LSTM')
model_gru.save('model/GRU')
Comme on le voit, le dépôt Git contient un dossier data avec des fichiers CSV et un dossier model avec les poids et les métadonnées des modèles.

Nous allons maintenant indexer tous les fichiers. Vous pouvez ajouter n'importe quel dossier, fichier ou donnée après la commande initiale.
git add .\data .\model LSTM_GRU.ipynb RNN.png
OU
Pour ajouter tous les fichiers à la zone d'index, utilisez le point.
git add .
Commit et push
Nous allons valider toutes les modifications avec un message simple ; la sortie récapitule les nouveaux fichiers créés.
git commit -m "project files added"
>>> [main aa3e19a] project files added
>>> 10 files changed, 5020 insertions(+)
>>> create mode 100644 LSTM_GRU.ipynb
>>> create mode 100644 RNN.png
>>> create mode 100644 data/Mastercard_stock_history.csv
>>> create mode 100644 data/Mastercard_stock_info.csv
>>> create mode 100644 model/GRU/saved_model.pb
>>> create mode 100644 model/GRU/variables/variables.data-00000-of-00001
>>> create mode 100644 model/GRU/variables/variables.index
>>> create mode 100644 model/LSTM/saved_model.pb
>>> create mode 100644 model/LSTM/variables/variables.data-00000-of-00001
create mode 100644 model/LSTM/variables/variables.index
La synchronisation avec le dépôt distant GitHub nécessite un nom de distant et un nom de branche : `git push <nom-distant> <nom-branche>`. Si vous n'avez qu'un seul distant et une seule branche, `git push` suffit.
Après `git push`, une fenêtre contextuelle vous demandera vos identifiants : saisissez votre nom d'utilisateur et votre mot de passe GitHub. Vous pouvez aussi générer des jetons d'accès personnels et les utiliser à la place du mot de passe. Pour en savoir plus, lisez le tutoriel Git Push et Pull.
git push
>>> Enumerating objects: 21, done.
>>> Counting objects: 100% (21/21), done.
>>> Delta compression using up to 4 threads
>>> Compressing objects: 100% (19/19), done.
>>> Writing objects: 100% (21/21), 1.83 MiB | 1.59 MiB/s, done.
>>> Total 21 (delta 2), reused 0 (delta 0), pack-reused 0
>>> remote: Resolving deltas: 100% (2/2), done.
>>> To https://github.com/kingabzpro/DataCamp-Git.git
>>> * [new branch] main -> main
Allons vérifier notre dépôt GitHub kingabzpro/DataCamp-Git pour confirmer que les changements ont bien été poussés. Le dépôt contient bien tous les fichiers, les données et les modèles.

Push vers GitHub
Branches Git
Il est recommandé de travailler avec des branches : par exemple, si vous voulez travailler sur la documentation, créez une branche documentation avec git checkout ou git branch. Modifiez le fichier README et, une fois vos changements finalisés, fusionnez la branche dans la base.
Dans notre cas, nous avons créé et basculé sur une nouvelle branche appelée readme.
git checkout -b readme
Modifions le README en ajoutant une description du projet et des liens vers l'espace de travail RNN de DataCamp et le tutoriel. Ensuite, nous indexerons les changements et enregistrerons un instantané avec un message.
git add README.md
git commit -m "project description and links to blog"
>>> [readme f3b8b9b] project description and links to blog
>>> 1 file changed, 8 insertions(+)
Le dépôt distant n'a pas de branche readme. Pour créer une nouvelle branche et pousser les changements, nous allons utiliser “readme:readme”. La sortie montre que les nouvelles branches ont été créées et que les branches locale et distante `readme` sont synchronisées.
git push origin readme:readme
>>> remote: Resolving deltas: 100% (1/1), completed with 1 local object.
>>> remote: Create a pull request for 'readme' on GitHub by visiting:
>>> remote: https://github.com/kingabzpro/DataCamp-Git/pull/new/readme
>>> remote:
To https://github.com/kingabzpro/DataCamp-Git.git
>>> * [new branch] readme -> readme
Vous pouvez constater que nous avons bien poussé la branche locale sur GitHub avec une version modifiée du fichier README.md.

Branche readme sur GitHub
Pull request
Cette fonctionnalité est courante dans les organisations. Par exemple, un développeur a travaillé sur une nouvelle fonctionnalité et souhaite fusionner ses modifications dans la branche distante principale. Nous allons créer une pull request depuis l'interface GitHub en cliquant sur le bouton pull request. Sélectionnez ensuite la branche readme à fusionner avec la base (main). Vous pouvez saisir une description détaillée des ajouts puis cliquer sur le bouton de création de pull request.

Pull request de readme vers main
Le mainteneur du dépôt comparera vos changements et les fusionnera une fois tous les tests passés. Dans notre cas, vous êtes le mainteneur : cliquez sur merge pour intégrer les changements dans la branche principale.

Fusion de pull request sur GitHub
Félicitations, vous avez créé une pull request et l'avez fusionnée avec la branche principale. Vous pouvez voir les changements sur la branche main ici.
Pour afficher toutes les modifications dans votre dépôt git, tapez `git log` : l'historique des changements de votre projet s'affiche. Le logging est crucial dans les projets de data science, et Git nous aide à tout tracer, y compris de gros jeux de données.

Historique des logs Git
Pour conclure
Les pratiques GitOps sont essentielles au développement des applications data. Elles sont devenues une compétence indispensable pour tous les métiers de l'IT ; même les chercheurs les utilisent pour partager leur code d'expérimentation avec un large public. De son côté, GitHub joue un rôle clé dans la promotion de l'open source en offrant un écosystème de développement gratuit pour tous.
Dans ce tutoriel, nous avons vu ce que sont Git et GitHub et pourquoi ils sont importants pour les projets de data science. Nous avons également passé en revue les commandes Git de base et pratiqué le suivi des changements sur les données, les modèles et le code. Si vous souhaitez approfondir Git, suivez le cours Introduction to Git sur DataCamp. Vous pouvez aussi découvrir l'intérêt de la certification GitHub Foundations et comment elle peut booster votre carrière.
Devenez ingénieur en données
FAQ Git
What is Git?
Un système de contrôle de version distribué et open source. Il permet aux développeurs de stocker, versionner et visualiser les modifications d'un projet. Il favorise un travail d'équipe flexible et des flux de travail optimisés.
What does Git stand for?
Ce n'est pas un acronyme. Selon son créateur, Linus Torvalds, “Git peut vouloir dire n'importe quoi, selon l'humeur du moment.” C'est une combinaison de trois lettres aléatoires qui ne sont utilisées par aucune commande UNIX.
How do I clone a Git repository?
Il suffit de taper `git clone <adresse du dépôt distant>` dans un terminal. Vous pouvez cloner des dépôts locaux ou distants. Les protocoles SSH et HTTPS sont pris en charge.
How to delete a branch in Git?
Pour supprimer une branche locale, utilisez `git branch -d <nom_branche_locale>`, et pour supprimer une branche distante, utilisez `git push <nom_distant> -d <nom_branche_distante>`.
How to switch branches in Git?
Basculez vers une branche existante avec `git checkout <nom_branche>` ou créez et changez vers une nouvelle branche avec `git checkout -b <nom_branche>`.
How do I install Git?
Sous Linux, utilisez `apt-get install git`, et pour les autres systèmes d'exploitation, consultez git-scm.com.
Is Git free?
Oui, il est gratuit et open source sous licence GPL-2.0.
What is Git Bash?
C'est une application pour Microsoft Windows qui fournit des utilitaires et une expérience de shell de type Unix.
How to create a new branch in Git?
Utilisez la commande `git branch <nouvelle-branche> <branche-de-base>` dans le terminal. Pour créer et basculer vers une nouvelle branche, utilisez `git checkout -b <nom_branche>`.
What does git pull do?
Elle met à jour la version locale d'un dépôt depuis un serveur distant, copie toutes les modifications du dépôt distant et les fusionne avec le répertoire local. Ce processus nécessite souvent de résoudre des conflits de fusion.
How to fork a repo in Git?
Le fork sur GitHub consiste à créer une copie d'un dépôt dans le compte GitHub d'un utilisateur à partir d'un autre compte. C'est généralement fait pour contribuer à la communauté ou pour le travail en équipe.
How to rename a branch in Git?
Pour le dépôt local, c'est simple : utilisez `git branch -m <ancien-nom> <nouveau-nom>`. Pour renommer une branche distante, il faut d'abord supprimer l'ancienne avec `git push origin --delete <ancien-nom>` puis pousser la nouvelle branche avec `git push -u origin <nouveau_nom>`.
How to delete the Git repository?
Vous pouvez supprimer le dossier local ou enlever le dossier .git avec `rm -fr .git`. Sur GitHub, allez dans les paramètres du dépôt et, en bas de page, vous trouverez l'option pour supprimer.
How to install Git on Windows?
Téléchargez l'installateur Windows depuis le site et lancez l'installation, qui installera Git Bash, Git CMD et Git GUI.
How to revert a commit in Git?
Utilisez `git revert <commit sha>`, qui requiert le hash unique d'un commit précédent. Vous pouvez aussi utiliser `git revert HEAD~2`, qui revient deux commits avant le head.