♻️ GitHub Plateforme de collaboration et d’hébergement du code projet

Initialisation

Dans l’écosystème du développement logiciel moderne, la maîtrise de Git et de GitHub est une compétence essentielle. Bien que souvent utilisés de manière interchangeable par les novices, Git et GitHub sont deux outils distincts mais complémentaires. Git est le moteur, le système de contrôle de version qui vous permet de suivre l’historique de votre code, tandis que GitHub est la plateforme sociale qui vous permet de le stocker, de le partager et de collaborer dessus avec d’autres.

Git et GitHub sont les piliers du développement collaboratif. Git donne le pouvoir de gérer l’historique du code en local, vous offrant une sécurité et une flexibilité sans précédent. GitHub, de son côté, transforme le travail en solo en une expérience collaborative et transparente, standardisant les flux de travail comme la revue de code via les pull requests.

En maîtrisant les deux outils, on adoptez une méthodologie de travail qui est au cœur du développement logiciel moderne, rendant plus efficace et capable de collaborer sur n’importe quel projet, de la petite startup au plus grand des projets open source.

Git : Le Cerveau du Contrôle de Version

Git est un système de contrôle de version distribué (DVCS). Développé par Linus Torvalds en 2005, son objectif principal est de gérer et de conserver l’historique des modifications de votre code source. Chaque fois que vous enregistrez votre travail, Git crée un instantané des fichiers, que vous pouvez consulter ou restaurer à tout moment.

Les Concepts Fondamentaux de Git :

  1. Dépôt (Repository) : L’endroit où Git stocke toutes les informations de votre projet. Il existe deux types :
    • Dépôt local : Sur votre machine, c’est là que vous travaillez.
    • Dépôt distant : Sur une plateforme comme GitHub, il sert de point de collaboration et de sauvegarde.
  2. Commit : Un instantané de votre travail à un moment donné. C’est l’unité de base de Git. Chaque commit est un enregistrement permanent qui a un identifiant unique (un hash). C’est comme prendre une photo de votre projet.
  3. Branche (Branch) : Une ligne de développement indépendante. Les branches permettent aux développeurs de travailler sur de nouvelles fonctionnalités ou des correctifs sans affecter le code principal (souvent la branche mainou master).
  4. Fusion (Merge) : Le processus de combiner les modifications d’une branche dans une autre.
  5. Staging Area (Zone de Staging) : Une zone temporaire entre votre répertoire de travail et le dépôt. C’est ici que vous sélectionnez les fichiers que vous souhaitez inclure dans votre prochain commit.

GitHub : La Plateforme Sociale pour le Code

GitHub est la plus grande plateforme d’hébergement pour les dépôts Git. C’est un service cloud qui facilite le travail d’équipe et la visibilité des projets. Si Git est le traitement de texte, GitHub est le cloud où vous stockez et partagez vos documents.

Fonctionnalités Clés de GitHub :

  • Hébergement de dépôts : Stockez vos dépôts distants et rendez-les accessibles à l’équipe.
  • Pull Requests (PR) : Le cœur de la collaboration. Une pull request est une proposition de modification que vous soumettez pour que d’autres développeurs puissent la revoir, la commenter et finalement la fusionner. C’est le standard de l’industrie pour la revue de code.
  • Issues (Problèmes) : Un système de suivi des tâches, des bugs et des nouvelles fonctionnalités. Il permet de gérer le travail et de communiquer clairement sur ce qui doit être fait.
  • Actions : Un outil d’automatisation de flux de travail (CI/CD). Vous pouvez l’utiliser pour tester, construire et déployer votre code automatiquement à chaque commit.
  • GitHub Pages : Un service d’hébergement de sites web statiques directement depuis un dépôt.

    Alternatives à Git et GitHub.

    Si Git et GitHub dominent le monde du développement logiciel, il est important de savoir que d’autres solutions existent. Comprendre leurs forces et leurs faiblesses peut vous aider à choisir l’outil le plus adapté à votre projet ou à votre entreprise, en particulier si vous avez des besoins spécifiques en matière de sécurité, de confidentialité, ou d’intégration.

     

    Comment choisir ?

    • Si le projet nécessite une suite DevOps complète (CI/CD, sécurité, gestion de projet intégrée) ou si vous avez besoin d’une solution auto-hébergée pour des raisons de conformité, GitLab est la meilleure option.
    • Si vous faites partie d’une entreprise qui utilise déjà l’écosystème Atlassian (Jira, Confluence), Bitbuckets’intégrera parfaitement à vos outils existants.
    • Si vous recherchez une solution légère et simple pour héberger vos projets en privé, Gitea ou Gogs sont d’excellents choix.
    • Si vous êtes un développeur individuel ou une petite équipe travaillant sur des projets open source, GitHub reste la plateforme la plus populaire et la plus riche en fonctionnalités communautaires.

    Références

     Les autres systèmes de contrôle de version

    Git est un système de contrôle de version décentralisé (DVCS), mais d’autres paradigmes existent et sont encore utilisés.

    1. Subversion (SVN) 

    SVN est un système de contrôle de version centralisé (CVCS). Toute l’histoire du projet est stockée sur un seul serveur central. Les développeurs “checkout” une copie de travail du code et y apportent leurs modifications.

    • Avantages : Plus simple à prendre en main pour les débutants car le modèle est moins complexe que celui de Git. Il est également très efficace pour les fichiers binaires.
    • Inconvénients : Un seul point de défaillance (le serveur). La collaboration est plus rigide et le développement hors ligne est difficile. La gestion des branches et des fusions est bien moins performante que celle de Git. SVN est généralement considéré comme obsolète pour les nouveaux projets de développement logiciel.
    2. Mercurial (Hg) 

    Mercurial est un autre système de contrôle de version décentralisé, tout comme Git. Créé à l’origine pour rivaliser avec Git, il se concentre sur la simplicité et la facilité d’utilisation.

    • Avantages : Sa ligne de commande est réputée plus cohérente et intuitive que celle de Git. Il est très performant et a une bonne gestion des gros dépôts.
    • Inconvénients : Bien que techniquement équivalent à Git sur de nombreux aspects, il n’a jamais atteint la même popularité et son écosystème est beaucoup plus petit. Le passage de Mercurial à Git est courant, mais l’inverse est rare.

    Alternatives à GitHub : Les plateformes d’hébergement

    Si Git est l’outil de base, les plateformes d’hébergement sont les services qui ajoutent des fonctionnalités de collaboration, de gestion de projet et d’automatisation.

    1. GitLab : La plateforme DevOps tout-en-un 

    GitLab est probablement la principale alternative à GitHub. La plateforme propose une suite d’outils DevOps complète, du contrôle de version au déploiement continu, en passant par la sécurité. Vous pouvez l’utiliser en tant que service cloud (GitLab.com) ou l’héberger sur votre propre serveur (Self-Hosted).

    • Avantages : L’intégration complète d’outils de CI/CD (GitLab CI/CD) est l’un de ses plus grands atouts. Le fait d’avoir tous les outils sur une seule et même plateforme simplifie considérablement les workflows. La version auto-hébergée est idéale pour les entreprises qui ont des besoins de sécurité et de conformité stricts.
    • Inconvénients : L’interface peut être plus complexe et moins conviviale pour les débutants que celle de GitHub.
    2. Bitbucket : L’alternative d’Atlassian 

    Bitbucket est la solution d’hébergement de dépôts Git développée par Atlassian, la société derrière Jira et Confluence. Il est souvent le choix privilégié pour les équipes qui utilisent déjà d’autres produits Atlassian.

    • Avantages : Excellente intégration avec l’écosystème Atlassian (Jira pour la gestion de projet, Confluence pour la documentation). Il offre une gestion des permissions très granulaire.
    • Inconvénients : Ses outils de CI/CD (Pipelines) sont moins puissants que ceux de GitLab ou de GitHub Actions. Les forfaits gratuits sont moins généreux que ceux de ses concurrents.
    3. Gitea & Gogs : Les solutions auto-hébergées 

    Gitea et Gogs sont des services d’hébergement de dépôts Git légers et auto-hébergeables. Ils sont parfaits si vous souhaitez une solution simple, rapide à déployer et qui ne nécessite pas de grosses ressources.

    • Avantages : Faible consommation de ressources, déploiement facile, parfait pour les petites équipes ou pour un usage personnel. Permet un contrôle total sur vos données et votre infrastructure.
    • Inconvénients : Les fonctionnalités de collaboration sont plus limitées (moins de plugins, pas de système d’intégration/déploiement continu aussi poussé que les autres). La gestion de l’infrastructure est à votre charge.

      📡 Commandes

      Commande Description
      git clone <url> Cloner un dépôt distant
      git add . Ajouter toutes les modifications
      git commit -m “message” Créer un commit avec un message
      git push origin main Pousser les commits locaux vers la branche main
      git pull origin main Récupérer les modifications distantes
      git checkout -b nouvelle-branche Créer et basculer sur une nouvelle branche
      git branch Lister les branches locales
      git merge nom-de-la-branche Fusionner une branche dans la branche active
      git status Voir l’état actuel des fichiers
      • Travaillez toujours sur des branches pour isoler vos modifications.
      • Faites des commits fréquents avec des messages clairs.
      • Utilisez pull requests pour collaborer avec votre équipe sur GitHub.
      • Synchronisez régulièrement votre code (git pull) pour éviter les conflits.

      Configurer Git en local

      • Configurer le nom d’utilisateur :
      • git config --global user.name "VotreNom"
      • Configurer l’email :
      • git config --global user.email "votre@email.com"

      Créer un nouveau dépôt local

      git init git add . git commit -m "Initial commit" git remote add origin <url_du_repo> git push -u origin main

       

      Mettre à jour votre dépôt local avec la version distante

      git pull origin main

       

      Mettre à jour la version distante avec la version locale

      git add . git commit -m "Mise à jour" git push origin main

      Supprimer un fichier suivi par Git

      Voir les fichiers ignorés par Git

      git ls-files --ignored --exclude-standard

       

      Astuce

      Pour voir rapidement toutes les commandes configurées :

      git config --list

       

      Raccourci des commandes fréquentes

      Action Commande
      Ajouter et committer en une commande git commit -am “Message du commit”
      Annuler le dernier commit git reset –soft HEAD~1
      Mettre à jour un commit précédent git commit –amend
      Synchroniser toutes les branches git fetch –all
      Voir l’historique de manière graphique git log –graph –oneline –all

       

       

       

      🗣 Lexique

       

        Terme Définition Commande Terminal
        Repository (Repo) Dossier ou projet contenant tous les fichiers, dossiers et l’historique des versions du code. git init pour initialiser un dépôt local.
        git clone <url> pour cloner un dépôt distant.
        Commit Instantané des modifications faites sur les fichiers. git add . pour ajouter les modifications.
        git commit -m “Message du commit” pour les sauvegarder.
        Branch (Branche) Version isolée du projet pour travailler sans affecter la version principale. git branch pour lister les branches.
        git checkout -b <nom_de_branche> pour créer une nouvelle branche.
        Main (ou Master) Branche principale par défaut d’un projet GitHub. git checkout main pour revenir à la branche principale.
        Merge Fusionner les modifications d’une branche dans une autre. git merge <nom_de_branche> pour fusionner une branche dans la branche actuelle.
        Pull Request (PR) Demande pour intégrer vos modifications dans une autre branche via GitHub. Sur GitHub : Créer une Pull Request via l’interface.
        Push Envoyer les commits locaux vers le dépôt distant. git push origin <nom_de_branche> pour pousser la branche actuelle vers GitHub.
        Pull Récupérer les modifications du dépôt distant et les fusionner localement. git pull origin <nom_de_branche> pour récupérer et intégrer les changements.
        Fetch Récupérer les modifications sans les fusionner. git fetch pour récupérer les nouvelles données du dépôt distant.
        Status Voir l’état des fichiers dans votre dépôt local. git status pour vérifier les fichiers modifiés, ajoutés ou en attente de commit.
        Log Historique des commits d’un projet. git log pour afficher la liste des commits.
        Stash Mettre les modifications temporaires de côté sans les committer. git stash pour sauvegarder les modifications en attente.
        git stash pop pour les restaurer.
        Conflict (Conflit) Se produit lorsque deux branches modifient la même partie d’un fichier. Résolution manuelle, puis git add . et git commit.
        Fork Copier un projet sur votre propre compte GitHub pour y travailler. Sur GitHub : Cliquez sur le bouton Fork du projet.
        Clone Copier un dépôt distant sur votre machine locale. git clone <url_du_dépôt>
        Pull Request Review Processus d’examen des changements proposés dans une Pull Request. Sur GitHub : Ajouter des commentaires et valider ou rejeter la PR.
        Revert Annuler un commit spécifique tout en conservant l’historique. git revert <id_du_commit> pour annuler un commit en créant un nouveau commit.
        Reset Annuler des modifications locales pour revenir à un état précédent. git reset –hard <id_du_commit> pour réinitialiser complètement.
        Diff Voir les différences entre deux versions d’un fichier. git diff pour voir les différences non committées.
        git diff <branche1> <branche2> pour comparer.
        Tag Marqueur pour identifier une version spécifique d’un projet. git tag <nom_du_tag> pour créer un tag.
        git push origin <nom_du_tag> pour pousser un tag.
        Checkout Basculer entre différentes branches ou commits. git checkout <nom_de_branche> pour passer sur une branche existante.
        Remote Dépôt distant lié au projet local. git remote -v pour afficher les dépôts distants.
        git remote add <nom> <url> pour en ajouter un.
        Rebase Réappliquer une série de commits sur une autre branche. git rebase <branche_cible> pour rebaser la branche actuelle.
        Blame Identifier qui a modifié chaque ligne d’un fichier. git blame <nom_du_fichier> pour afficher les auteurs des modifications.
        Clean Supprimer les fichiers non suivis par Git dans le projet. git clean -f pour supprimer les fichiers non suivis.
        Squash Combiner plusieurs commits en un seul. git rebase -i HEAD~<nombre_de_commits>pour “squasher” les commits.
        Ignore Fichier qui indique à Git quels fichiers ignorer. Créer un fichier .gitignore et ajouter les chemins des fichiers à ignorer.

         

         

        📛 Conflits

        Résoudre des conflits Git

        Si des conflits apparaissent lors d’un git pull ou git merge :

        1. VSCode vous affiche les conflits dans les fichiers avec des sections :
          • <<<<<<< HEAD pour votre version locale.
          • ======= pour la version distante.
          • >>>>>>> pour l’autre version.
        2. Choisissez la version à conserver ou fusionnez les modifications.
        3. Ajoutez les fichiers résolus :
        git add .
        1. Faites un commit pour valider la résolution des conflits :
          git commit -m "Résolution des conflits"
        2. Poussez les modifications vers GitHub :
        git push

        🧲 Intégration VSCode

        Pour une intégration plus fluide, utilisez les extensions suivantes :

        Extension officielle : GitHub Pull Requests and Issues

        1. Allez dans Extensions (Ctrl+Shift+X / Cmd+Shift+X).
        2. Recherchez “GitHub Pull Requests and Issues”.
        3. Installez l’extension pour gérer vos pull requests et issues directement dans VSCode.

        🌿 Branches ?

        Créer et travailler sur des branches

        1. Créer une nouvelle branche dans VSCode :
          • Allez dans l’onglet Source Control, cliquez sur Create Branch.
          • Ou utilisez la commande :
          • git checkout -b nom-de-la-branche
        2. Changer de branche :
          git checkout nom-de-la-branche
        3. Fusionner une branche dans main :
        git checkout main
        git merge nom-de-la-branche
        1. Pousser la branche sur GitHub :
          git push origin nom-de-la-branche

        👣 Gérer les versions

        Une fois le projet ouvert dans VSCode, suivez ces étapes :

        Ajouter et committer vos modifications

        1. Modifiez vos fichiers selon vos besoins.
        2. Allez dans l’onglet Source Control (Ctrl+Shift+G / Cmd+Shift+G).
        3. Ajoutez les modifications :
          • Cliquez sur + pour ajouter tous les fichiers modifiés à Git.
          • Ou utilisez :
            git add .

             

        4. Créez un commit avec un message descriptif :
          • Dans l’interface VSCode, saisissez un message puis cliquez sur Commit.
          • Ou utilisez le terminal :
        git commit -m "Message de commit clair"

        Pousser vos modifications sur GitHub

        • Envoyez les modifications locales vers GitHub :
          • Dans VSCode, cliquez sur l’icône Synchronize Changes.
          • Ou utilisez la commande :
        git push origin main
        • Si la branche main n’existe pas encore sur le dépôt distant, créez-la :
        git push -u origin main

        Récupérer les modifications distantes

        Pour récupérer les dernières modifications du dépôt distant :

        • Cliquez sur “Pull” dans l’interface VSCode.
        • Ou utilisez la commande :
        git pull origin main

         

        👣 Cloner dépôt GitHub

        Méthode 1 : Utiliser le terminal intégré de VSCode

        1. Ouvrez VSCode et lancez le terminal (Terminal > New Terminal).
        2. Clonez le dépôt distant avec la commande suivante :
          git clone https://github.com/votre-utilisateur/votre-repo.git
        3. Ouvrez le dossier cloné :
        cd votre-repo
        code .

        Méthode 2 : Utiliser l’interface graphique de VSCode

        1. Ouvrez VSCode et allez dans l’onglet Source Control
        2. (ou utilisez Ctrl+Shift+G / Cmd+Shift+G sur Mac).
        3. Cliquez sur “Clone Repository”.
        4. Collez l’URL du dépôt GitHub.
        5. Choisissez le dossier où enregistrer le projet.
        6. Ouvrez le projet lorsqu’il est cloné.

         

        📡 Configuration de Git

        Informations utilisateur :

        Dans le terminal ou dans VSCode (Terminal > New Terminal), configurez votre nom et votre email :

        git config --global user.name "VotreNom"
        git config --global user.email "votre.email@example.com"

        Vérifiez la configuration :

        git config --list

         

        👣 Infsos

        GitHub est une plateforme en ligne qui permet d’héberger du code, de collaborer sur des projets et de gérer des versions grâce à Git. C’est un outil incontournable pour les développeurs et les équipes qui travaillent sur des projets logiciels. 


         

        Git et GitHub : Quelle différence ?

        • Git : Un logiciel open source qui permet de gérer les versions du code en local.
        • GitHub : Une plateforme en ligne qui utilise Git pour héberger vos projets et faciliter la collaboration.

         


         

        Pourquoi utiliser GitHub ?

        • Pour travailler en équipe : Collaboration simplifiée grâce aux branches, commits et pull requests.
        • Pour sécuriser votre code : Sauvegarde en ligne et historique des modifications.
        • Pour apprendre et contribuer : Des millions de projets open source sont disponibles pour être explorés ou améliorés.
        • Pour automatiser des tâches : Déploiement, tests et intégration continue grâce à GitHub Actions.
        • Pour être visible : Les développeurs utilisent GitHub pour montrer leurs compétences grâce à leurs projets publics.

         


         

        Avant de commencer, assurez-vous d’avoir :

        1. Git installé : Télécharger Git
        git --version
        1. Un compte GitHub : Créez-en un sur GitHub.com.
        2. Visual Studio Code installé : Télécharger VSCode.
        3. GitHub CLI (optionnel) : Permet d’interagir avec GitHub depuis le terminal. Installez-le : GitHub CLI.

        Initialiser le repository local

        git init

        Ajouter tous les fichiers au suivi

        git add .

        Créer le premier commit

        git commit -m "Initial commit"

        Lier le repo local au repo distant (

        git remote add origin https://github.com/nataswim/REPOXXXX

        Envoyer le projet vers GitHub

        git push -u origin main

        Mettre à jour le projet et envoyer les modifications
        Ajouter les modifications apportées aux fichiers

        git add .

        Créer un commit avec message de modifications

        git commit -m "MAJ commit 00XX"

        Envoyer les modifications vers le repository distant :

        git push