Aller au contenu

Git avec GitHub

Module P_prog – ETML 319

  • Auteur : Jonathan Melly
  • Modifié par : Dimitrios Lymberis

Prérequis

Avant de commencer, assurez-vous d’avoir installé :

⚠️ Dans cette page d'inroduction, nous utilisons GitHub Desktop pour simplifier l’apprentissage de Git.
L’utilisation de Git dans Visual Studio fera l’objet d’un chapitre à part.


Introduction

Ce document est une introduction à l’utilisation simple de Git avec GitHub pour travailler seul à deux endroits distincts (travail et maison).


Repository

L’entité principale dans Git est le Repository (ou "Dépôt"), souvent abrégé Repo.

Formellement, un repo Git est le dossier .git/ dans le dossier du projet.
Ce dépôt suit toutes les modifications dans les fichiers du projet, construisant un historique au fil du temps.

Warning

Si vous supprimez le dossier .git/, vous supprimez l'historique du projet.

On appelle souvent repo l’ensemble du dossier de projet et de son .git/.


Local vs Remote

Git est un système de gestion de version décentralisé.
Il peut exister plusieurs copies d’un même repo sur différentes machines.

  • Une seule copie sur GitHub : c’est le Remote (ou origin).
  • Chaque copie sur une machine : un repo local.

Cela donne beaucoup de flexibilité, mais nécessite une bonne gestion de la synchronisation entre remote et local (elle n’est pas automatique, et c’est une bonne chose).

Image title

local vs remote

Commandes de base

  • Clone : crée un repo local depuis le remote.
  • Pull : met à jour le repo local depuis le remote.
  • Push : met à jour le remote avec les modifications locales.
  • Commit : enregistre dans le repo local tous les changements depuis le dernier Pull, Commit ou Clone.

Info

Un Commit Git est une « capture instantanée » ou une « version » de votre projet qui enregistre les modifications apportées à vos fichiers dans votre dépôt local. Il fonctionne comme un « point de sauvegarde » dans l'historique de votre projet, chaque commit incluant les métadonnées telles qu'un message descriptif, la date et l'auteur de la modification, et un pointeur vers le commit précédent.

Pour effectuer un commit, vous devez d'abord utiliser la commande git add pour « stager » (préparer) les modifications dans la zone de staging, puis git commit pour créer l'instantané et le sauvegarder localement.

À quoi sert un commit ?

  • Historique du projet : Les commits créent un historique détaillé des changements, permettant de suivre l'évolution du projet au fil du temps.
  • Retour en arrière : Vous pouvez facilement revenir à des versions antérieures fonctionnelles si une modification introduit un problème.
  • Collaboration : Le message de commit sert de communication pour expliquer la nature des modifications aux autres collaborateurs.
  • Versionnement : Chaque commit représente une version stable de votre projet, que vous pourrez pusher (envoyer) vers un dépôt distant plus tard.

Exemple d’utilisation

  1. J’installe GitHub Desktop sur mes deux postes (ETML et maison).
  2. Depuis ETML, je crée un nouveau repo sur GitHub nommé flowers.
  3. Je le clone avec GitHub Desktop.
  4. Je place le repo local où je veux (pas sur un lecteur réseau !).
  5. Je travaille sur le projet (code, docs, images, etc.).
  6. Je fais un commit pour enregistrer les modifications.
  7. Je fais un push pour mettre à jour le remote.
  8. Je continue à travailler, modifie, ajoute des fichiers...
  9. Je commit à nouveau pour enregistrer le travail.
  10. Je push à nouveau.
  11. Je rentre chez moi, je veux encore travailler.
  12. Je clone le repo chez moi, état identique à ETML.
  13. Je continue mon travail localement.
  14. Je fais un commit local.
  15. Je fais un push.
  16. De retour à ETML, mon repo local est en retard.
  17. Je fais un pull pour le mettre à jour.
  18. Je travaille, fais plusieurs commit / push.
  19. Le soir, je fais un pull chez moi avant de continuer.

Conflits

Il est essentiel de faire un pull au début et un push à la fin de chaque session.
Oublier peut générer des conflits difficiles à résoudre.

Exemple de conflit

Un fichier tulipe.png est à jour partout.
Je le modifie à ETML, fais commit + push.
À la maison, sans faire de pull, je le modifie, fais commit + pushErreur : push refusé.


Commits : Nommage et contenu

Pour tirer le meilleur parti de Git :

1. Commits atomiques

Un commit doit couvrir une seule tâche complète.

Exemple : ajout d’un champ dans un formulaire → un seul commit contenant toutes les modifications liées.

2. Bon nommage

Un bon message de commit se compose de :

  • Un préfixe (type) :
  • feat : nouvelle fonctionnalité
  • fix : correction de bug
  • chore : tâches administratives
  • doc : documentation
  • refactor : refactorisation
  • test : ajout/modification de tests
  • typo : correction mineure

  • Le scope (entre parenthèses) : ce que cela concerne

  • Une description active (compléter l’une de ces phrases) :
  • « Si on applique ce commit, le système va ... »

Exemples

  feat(user): Allow to change the address of the user
  refactor(homepage): Use <div> instead of <table>
  chore(project): update the "journal de travail"

Navigation

Introduction Compte personnel Ex. Travailler sur 2 postes


Pour aller plus loin