# Publier ses résultats (1/2) : Gérer son code avec Git et GitHub > Page d'accueil de la compétence: [[Publier ses résultats]] >[!tip] Tags > #Git #GitHub #VersionControl #DataScience #Portfolio #Reproducibility > [!note] Fil directeur > Ce premier cours a pour but de vous donner les bases solides de la gestion de version avec Git et GitHub. Nous verrons pourquoi c'est un outil indispensable pour tout data scientist et comment l'utiliser pour structurer, sauvegarder et partager vos projets. >[!example] Contenu de ce cours > - Comprendre l'intérêt de la gestion de version. > - Créer et gérer un dépôt (repository) sur GitHub. > - Maîtriser le workflow de base : `clone`, `add`, `commit`, `push`. > - Structurer un projet de data science (fichiers `.py`, `.ipynb`, `requirements.txt`, `.gitignore`). # Pourquoi Git et GitHub ? En tant que data scientist, votre code est un de vos actifs les plus précieux. Le perdre, ou perdre une version qui fonctionnait, peut être catastrophique. > [!definition] Git & GitHub > - **Git** est un **système de gestion de version** qui s'exécute sur votre machine. Il agit comme une machine à remonter le temps pour votre code, vous permettant de suivre chaque modification et de revenir en arrière si besoin. > - **GitHub** est une **plateforme web** qui héberge des dépôts Git. C'est un service cloud pour votre code qui ajoute des fonctionnalités de collaboration, de partage et de visibilité (votre portfolio !). **Les 3 raisons clés pour un data scientist :** 1. **Sauvegarde et Historique :** Protégez votre travail contre les suppressions accidentelles. Chaque "commit" est un point de sauvegarde intelligent. 2. **Reproductibilité :** Partagez un projet complet (code, dépendances, documentation) pour que d'autres puissent reproduire vos résultats. C'est la base de la science ! 3. **Portfolio Professionnel :** Votre profil GitHub devient votre CV technique, montrant vos compétences et vos projets aux recruteurs. # Le Workflow Essentiel Le cycle de vie de base d'une modification avec Git se fait en 4 commandes. > [!note] Prérequis > - Avoir créé un compte sur [GitHub.com](https://github.com). > - Avoir [installé Git](https://git-scm.com/book/fr/v2/D%C3%A9marrage-rapide-Installation-de-Git) sur votre machine. ## Créer et Cloner un Dépôt Un **dépôt** (ou *repository* / *repo*) est un dossier qui contient tous les fichiers de votre projet, ainsi que l'historique de toutes les modifications. **Étape 1 : Créer le dépôt sur GitHub** 1. Allez sur votre profil GitHub, cliquez sur "New repository". 2. Donnez-lui un nom (ex: `ma-premiere-app-streamlit`). 3. Laissez-le **Public**. 4. **Important :** Cochez "Add a README file". 5. Cliquez sur "Create repository". **Étape 2 : Cloner le dépôt sur votre machine** 1. Sur la page de votre nouveau dépôt, cliquez sur le bouton vert "Code". 2. Copiez l'URL HTTPS (ex: `https://github.com/votre-nom/ma-premiere-app-streamlit.git`). 3. Ouvrez un terminal, naviguez où vous voulez placer votre projet, et tapez : ```bash git clone https://github.com/votre-nom/ma-premiere-app-streamlit.git ``` Cela crée un dossier local `ma-premiere-app-streamlit` parfaitement synchronisé avec votre dépôt en ligne. # Le Cycle de Vie d'une Modification Imaginez que vous êtes dans le dossier de votre projet. **Étape 1 : Modifier ou Ajouter des fichiers** Créez un nouveau fichier ou modifiez le `README.md` existant. **Étape 2 : `git add` - Préparer la "photo"** Cette commande sélectionne les modifications que vous voulez inclure dans votre prochain point de sauvegarde. ```bash # Ajouter un fichier spécifique git add nom_du_fichier.py # Ajouter TOUS les fichiers modifiés (très courant) git add . ``` **Étape 3 : `git commit` - Prendre la "photo"** Un **commit** est un point de sauvegarde permanent de votre code. Chaque commit doit être accompagné d'un message descriptif. ```bash git commit -m "Ajout du script principal de l'application" ``` > [!tip] Bonnes pratiques pour les messages de commit > - Soyez court et descriptif. > - Utilisez le présent de l'indicatif ("Ajoute la fonction X", "Corrige le bug Y"). **Étape 4 : `git push` - Envoyer la "photo" sur GitHub** Cette commande envoie tous vos commits locaux vers le dépôt distant sur GitHub, mettant à jour votre sauvegarde en ligne. ```bash git push ``` Votre code est maintenant à jour sur GitHub ! # Structure d'un Projet de Data Science Un dépôt bien organisé est un dépôt facile à comprendre. ## Le fichier `README.md` C'est la page d'accueil de votre projet. Il doit expliquer : - Ce que fait le projet. - Comment l'installer et le lancer. - Un exemple d'utilisation. ## Le fichier `.gitignore` Ce fichier crucial indique à Git quels fichiers ou dossiers **ignorer**. C'est indispensable pour ne pas envoyer : - Des fichiers de données volumineux (`.csv`, `.parquet`...). - Des dossiers de cache (`__pycache__`). - Des environnements virtuels (`venv/`, `.env`). - Des secrets (clés d'API, mots de passe). > [!example] Exemple de fichier `.gitignore` pour un projet Python > ``` > # Fichiers de données > *.csv > data/ > > # Environnement virtuel > venv/ > .env > > # Cache Python > __pycache__/ > *.pyc > ``` > Créez un fichier nommé `.gitignore` à la racine de votre projet et copiez ce contenu. ## Le fichier `requirements.txt` Ce fichier liste toutes les bibliothèques Python nécessaires pour faire tourner votre projet. C'est la clé de la **reproductibilité**. **Comment le créer ?** Une fois que votre code fonctionne et que vous avez toutes les bibliothèques installées, tapez cette commande dans votre terminal (avec votre environnement virtuel activé) : ```bash pip freeze > requirements.txt ``` **Comment l'utiliser ?** Quelqu'un qui clone votre projet n'a qu'à taper cette commande pour installer toutes les dépendances d'un coup : ```bash pip install -r requirements.txt ``` ## `.ipynb` vs `.py` - **Jupyter Notebooks (`.ipynb`) :** Parfaits pour l'**exploration**, l'analyse et la visualisation. Gardez-les dans un dossier `notebooks/`. - **Scripts Python (`.py`) :** Essentiels pour le code de **production**, comme une application Streamlit. Votre application principale s'appellera souvent `app.py`. # ➡️ C'est la fin ! - Cours précèdent: `cours-de-départ` - Prochain cours: [[Cours 2 - Publier ses résultats]] - Page d'accueil de la compétence: [[Publier ses résultats]] # 🗓️ Historique - Dernière MAJ: `20-Octobre-2025` - Rédigé par: [[Hamilton DE ARAUJO]]