đŸŒ± Git AvancĂ©

Choix du client utilisé pendant le cours

Comme vous allez le voir, Git est un systĂšme de contrĂŽle de version.

Il repose sur des protocoles standardisĂ©s (comme HTTP, SSH ou son propre protocole Git) pour assurer la communication entre dĂ©pĂŽts locaux et distants. Cette standardisation permet Ă  Git d’ĂȘtre compatible avec de nombreux outils et interfaces, qu’il s’agisse de la ligne de commande, d’environnements de dĂ©veloppement intĂ©grĂ©s (IDE), ou d’applications graphiques comme GitHub Desktop, Git Kraken, ou les plugins Visual Studio Code.


Tout au long de ce cours, vous utiliserez exclusivement le terminal pour mieux comprendre les commandes Git et leur fonctionnement en profondeur.
Une fois que vous maĂźtrisez un concept et les commandes associĂ©es, vous ĂȘtes libres de passer Ă  l’outil graphique de votre choix, comme Git Extensions, le plugin Git pour Visual Studio Code, ou Git Kraken.


Pour ce chapitre, vous pouvez pratiquer dans l’environnement de votre choix, Ă  condition d’avoir git installĂ© et accessible via un terminal.

Nous vous encourageons vivement, tout au long de ce chapitre et des suivants, à explorer différents environnements pour découvrir les diverses possibilités, ainsi que les similitudes et les différences.

Voici quelques exemples d’environnements que vous pouvez utiliser :

  • Votre machine personnelle avec Git installĂ©
  • Tout environnement du SSPCloud, comme Cloudshell, VSCode, ou RStudio

Feuille de commandes utiles pour Git : https://education.github.com/git-cheat-sheet-education.pdf

Pour accéder à un récapitulatif rapide des commandes Git les plus courantes, vous pouvez utiliser la commande suivante dans un terminal :

git --help

Pourquoi utiliser git ?

Vous avez besoin de Git chaque fois :

  • vous collaborez avec d’autres
  • vous souhaitez garder une trace de votre travail au fil du temps
  • Vous dĂ©sirez rĂ©cupĂ©rer du code et y contribuer
  • Vous Ă©crivez du code

Git est un systĂšme de contrĂŽle de version dĂ©centralisĂ© (Distributed Version Control System - DVCS) qui aide les dĂ©veloppeurs Ă  gĂ©rer leurs projets logiciels. Il permet de conserver toutes les versions du code, ce qui est utile lors de collaborations, car il simplifie la gestion des contributions de chacun et prĂ©vient les conflits. Git garde Ă©galement un historique complet des modifications, essentiel pour suivre l’Ă©volution d’un projet. GrĂące Ă  des demandes de tirage (pull requests) et Ă  des branches, il facilite l’intĂ©gration des modifications de maniĂšre organisĂ©e. Les dĂ©veloppeurs peuvent revenir Ă  des versions antĂ©rieures pour comprendre des fonctionnalitĂ©s ou des problĂšmes, tout en synchronisant leur travail local avec les environnements distants.

Documentation officiel, À propos de la gestion de version : https://git-scm.com/book/fr/v2/D%c3%a9marrage-rapide-%c3%80-propos-de-la-gestion-de-version

Utilisation de git en local

Initialiser un projet Git

Pour commencer un projet Git, il suffit d’exĂ©cuter la commande suivante :

git init

Cette commande crĂ©e un sous-dossier nommĂ© .git dans le rĂ©pertoire courant. Ce dossier contient tous les fichiers nĂ©cessaires au suivi des modifications, y compris l’historique des versions, les rĂ©fĂ©rences et les configurations du dĂ©pĂŽt.

Lorsque l’on rĂ©cupĂšre un dĂ©pĂŽt depuis Internet, on obtient Ă©galement le dossier .git dans notre rĂ©pertoire local. La prĂ©sence de ce dossier indique Ă  Git que nous sommes dans un dĂ©pĂŽt Git.

Notez que le dossier .git est masquĂ© dans votre explorateur de fichiers (comme tous les dossiers dont le nom commence par un point). Cependant, il est possible de le parcourir et de le modifier, comme nous le verrons dans la section 🔄 Automatisation des contrĂŽles sur une base de code versionnĂ©e.

Consultez la documentation officielle : Git Init.

Gestion des versions

CrĂ©ation d’une version

Dans un dĂ©pĂŽt Git, vous avez la possibilitĂ© de crĂ©er de nouvelles versions de votre projet en spĂ©cifiant les fichiers que vous souhaitez inclure dans cette version. Ce processus est souvent appelĂ© “staging”.

Objectif du Staging

L’objectif principal de cette fonctionnalitĂ© est de vous permettre de travailler localement sans vous prĂ©occuper du versionnage. Lorsque vous ĂȘtes prĂȘt Ă  crĂ©er une nouvelle version, vous pouvez regrouper vos fichiers de maniĂšre logique et cohĂ©rente.

Exemple :

Imaginons que vous développiez une application de gestion de bibliothÚque, avec deux fonctionnalités principales :

  1. Ajout de nouveaux livres à la base de données.
  2. Suppression de livres de la base de données.

AprÚs avoir apporté des modifications à votre code, il est préférable de créer une version pour chaque ajout fonctionnel. Par conséquent :

  • D’abord, vous enregistrez les changements liĂ©s Ă  l’ajout de livres.
  • Ensuite, vous traitez les modifications apportĂ©es Ă  la suppression de livres.
Ajout de Fichiers au Staging

Pour préparer les fichiers en vue de la prochaine version, vous utilisez la commande git add. Par exemple :

git add nom_du_fichier

Ou, pour ajouter tous les fichiers modifiés dans le répertoire courant :

git add .

Git utilise ce qu’on appelle un index, qui sert de transition entre votre rĂ©pertoire de travail (working directory) et la version finale (commit).

Pour vĂ©rifier l’Ă©tat de vos fichiers, vous pouvez utiliser la commande :

git status
Qu’est-ce qu’un Commit ?

Un commit représente un ensemble de modifications (ajouts, modifications, suppressions) sauvegardées dans votre dépÎt Git.

Lorsque tous les fichiers ajoutĂ©s sont prĂȘts et constituent un ensemble cohĂ©rent pour une nouvelle version, vous pouvez crĂ©er un commit avec la commande :

git commit [options]

Exemple :

git commit -m "Ajout de la fonctionnalité d'ajout de livres"

Un commit contient, en plus des modifications apportĂ©es, plusieurs mĂ©tadonnĂ©es, notamment la date, l’auteur (nom et adresse e-mail) et un message descriptif.

Ces métadonnées sont déclaratives, ce qui signifie que vous pouvez anti-dater ou post-dater un commit si vous le souhaitez.

Consultez la documentation officielle : Git Commit.

Git offre plusieurs commandes pour gĂ©rer l’historique des versions et naviguer entre les diffĂ©rentes modifications.

Annuler des Modifications

La commande git restore est utilisĂ©e pour annuler les modifications dans votre rĂ©pertoire de travail ou pour restaurer des fichiers Ă  partir d’un commit prĂ©cĂ©dent.

Exemple :

Si vous avez modifié un fichier, mais que vous souhaitez annuler ces modifications avant de faire un commit, vous pouvez utiliser :

git restore nom_du_fichier

Pour restaurer un fichier Ă  partir d’un commit spĂ©cifique, vous pouvez indiquer l’identifiant du commit :

git restore --source <commit_id> nom_du_fichier

Cette commande est utile lorsque vous avez besoin de revenir Ă  une version antĂ©rieure d’un fichier sans affecter les autres modifications dans votre branche actuelle.

Consultez la documentation officielle : Git Restore.


La commande git reset est utilisĂ©e pour annuler des modifications dans un dĂ©pĂŽt Git. Elle peut modifier l’historique des commits, l’index (la zone de staging) et le rĂ©pertoire de travail, selon les options que tu utilises avec cette commande.

Types de git reset

  1. git reset --soft <commit> :
    DĂ©place le HEAD de la branche courante vers le commit spĂ©cifiĂ©, en gardant les modifications dans l’index.

    git reset --soft HEAD~1
    
  2. git reset --mixed <commit> (par défaut) :
    DĂ©place le HEAD vers le commit spĂ©cifiĂ©, mais retire les modifications de l’index tout en les gardant dans le rĂ©pertoire de travail.

    git reset HEAD~1
    
  3. git reset --hard <commit> :
    DĂ©place le HEAD vers le commit spĂ©cifiĂ© et rĂ©initialise l’index et le rĂ©pertoire de travail pour correspondre Ă  ce commit, entraĂźnant la perte de toutes les modifications non engagĂ©es.

    git reset --hard HEAD~1
    

Consultez la documentation officielle : Git Reset.


Explorer l’Historique des Commits

La commande git log vous permet d’afficher l’historique des commits dans votre dĂ©pĂŽt. Cela vous aide Ă  comprendre les changements qui ont Ă©tĂ© apportĂ©s au fil du temps.

Exemple :

Pour afficher l’historique des commits, vous pouvez simplement exĂ©cuter :

git log

Cela affichera une liste des commits avec leurs identifiants, auteurs, dates et messages associĂ©s. Si vous souhaitez afficher l’historique de maniĂšre plus concise, vous pouvez utiliser des options comme --oneline :

git log --oneline

Cela montre chaque commit sur une seule ligne, ce qui peut ĂȘtre plus lisible pour une vue d’ensemble rapide.

Consultez la documentation officielle : Git Log.

GitFlow : Branches et Fonctionnalités

L’objectif de GitFlow est de dĂ©terminer un mode de fonctionnement en projet qui permet de dĂ©couper le travail en diffĂ©rents degrĂ©s de maturitĂ© :

  • Version stable de l’application : La derniĂšre version livrĂ©e, qui est fonctionnelle et prĂȘte Ă  ĂȘtre utilisĂ©e.
  • Version en cours de dĂ©veloppement : Une version qui peut fonctionner, mais qui nĂ©cessite probablement des ajustements avant l’intĂ©gration finale, ou qui attend l’achĂšvement de certaines fonctionnalitĂ©s.
  • Versions temporaires : Branches destinĂ©es Ă  des fonctionnalitĂ©s en cours de dĂ©veloppement, comme la correction de bogues ou l’ajout de nouveaux endpoints.

Pour gérer ces différentes versions, il est essentiel de comprendre le concept de branches dans Git.

Branches

Une branche dans Git reprĂ©sente une ligne du temps indĂ©pendante, partant d’un commit ou d’une version prĂ©cise. Elle permet de travailler sur des tĂąches spĂ©cifiques sans affecter le reste du projet et facilite le travail en Ă©quipe sur des fonctionnalitĂ©s distinctes.

Commandes pour gérer les branches :

Pour créer une nouvelle branche :

# Créer une branche appelée nouvelle-branche
git branch nouvelle-branche

# Supprimer la branche nouvelle-branche en local
git branch -d nouvelle-branche

# Lister toutes les branches disponibles
git branch

Pour se déplacer sur une branche existante :

# Si nouvelle-branche existe
git switch nouvelle-branche

# Créer une branche nouvelle-branche et s'y déplacer
git switch -b nouvelle-branche

Consultez la documentation officielle : Git Branch Consultez la documentation officielle : Git Switch

Intégration des Changements

Pour intĂ©grer des modifications issues d’une autre branche dans la branche courante, vous pouvez utiliser la commande git merge.

Exemple :

Pour intégrer les changements de la branche nouvelle-branche dans la banche branche-stable :

git switch branch_stable
git merge nouvelle_branche

Cela fusionnera les modifications de nouvelle-branche dans la branche branche-stable.

Pour en savoir plus sur la gestion des conflits lors d’une fusion, consultez cette documentation sur les conflits Git.

Consultez la documentation officielle : Git Merge


La commande git rebase est une autre maniĂšre d’intĂ©grer des changements. Au lieu de crĂ©er un commit de fusion, elle dĂ©place la base de la branche actuelle pour inclure les commits d’une autre branche. Cela rend l’historique plus linĂ©aire.

Exemple :

Pour intégrer les changements de la branche nouvelle-branche dans la banche branche-stable:

git switch nouvelle_branche
git rebase branch_stable
git switch branch_stable
git merge nouvelle_branche

Consultez la documentation officielle : Git Rebase

Branches de Fonctionnalités et Branches Stables

Dans le cadre de GitFlow, on distingue plusieurs types de branches :

Branches Stables
  • master/main : La branche de rĂ©fĂ©rence, contenant la version la plus stable du projet.
  • release-1, release-2, … : Branches qui intĂšgrent des changements depuis le dĂ©veloppement.
  • develop : Branche contenant le travail en cours, sanctuarisĂ©e et stabilisĂ©e.
Branches de Fonctionnalités
  • Hotfix : Souvent nommĂ©es hotfix-**, ces branches permettent d’apporter des modifications urgentes et critiques sur les versions stables, par exemple, pour corriger des bogues de sĂ©curitĂ©.

  • Feature : Souvent nommĂ©es topic-**, ces branches sont utilisĂ©es pour le dĂ©veloppement de nouvelles fonctionnalitĂ©s.

Workflow Classique

Le workflow classique suit ces étapes :

  1. Un développement est effectué sur une branche de fonctionnalité.
  2. La branche est soumise Ă  une revue par l’Ă©quipe du projet.
  3. Une fois approuvé, les changements sont intégrés à la derniÚre version de la branche develop.

Pour approfondir vos connaissances sur les workflows classiques de travail avec Git, vous pouvez consulter ce petit guide.

Utilisation avec un dépot distant

Git, gitlab, github …

Avec la rĂ©ussite de Git, des outils appelĂ©es Forges Logicielles sont apparues. Elles permettent de proposer l’hĂ©bergement du code source d’application publiques et privĂ©es de maniĂšre gratuite et offrent d’autres services de gestion ainsi que des interfaces clients apprĂ©ciables.

On distingue 2 catégories de forges :

  • les forges “As A Service” qui sont mises Ă  disposition par des entreprises tierces et dont les donnĂ©es sont hĂ©bergĂ©es chez ces fournisseurs
  • les forges “On premise” qui sont hĂ©bergĂ©es directement dans les organisations qui les utilisent.

Exemples de forges “As A Service” :

  • Github.com est un des leaders du marchĂ©, hĂ©bergeant une grande partie du code open source et des grands projets ouverts. Github a Ă©tĂ© rachetĂ© par Microsoft en 2018 pour 7.5 milliards de dollars. Le code source de github n’est pas public.

  • Gitlab.com est un concurrent trĂšs actif. Le code qui sous-tend gitlab.com est en trĂšs grande partie libre : https://gitlab.com/gitlab-org/gitlab

    Important : gitlab.com est une installation particuliĂšre du logiciel gitlab sur les serveurs de l’entreprise gitlab. Vous rencontrerez, dans votre carriĂšre, d’autres installations du logiciel gitlab sur d’autres serveurs (cf “On premise”). Attention donc Ă  ne pas confondre le service gitlab.com, le logiciel gitlab et les diffĂ©rentes installations de gitlab que vous rencontrerez.

  • Bitbucket.org : moins utilisĂ©, il appartient Ă  Atlassian (connu pour son outil de gestion de projet / ticket Jira)

Exemples de forges “On premise” :

De nos jours, la plupart des forges “on premise” sont des installations du logiciel gitlab mais il existe des alternatives. Citons par exemple https://gogs.io/ et https://fusionforge.org/

DépÎts centraux

Les dépÎt centraux se présentent comme des dépÎt locaux hébergés sur des serveurs distants.

Il s’agit lĂ  de versions “canoniques” qui peuvent ĂȘtre rĂ©cupĂ©rĂ©es par des dĂ©veloppeurs habilitĂ©s, ou par tout le monde. On parle alors de dĂ©pĂŽt public (et non pas forcĂ©ment d’opensource).

On peut intĂ©ragir avec eux a l’aide de commandes dĂ©diĂ©es qui permettent de mettre Ă  jour un dĂ©pĂŽt, local ou distant, par rapport Ă  un autre.

Cloner un DépÎt

La commande git clone est utilisĂ©e pour crĂ©er une copie locale d’un dĂ©pĂŽt distant. Cela vous permet de commencer Ă  travailler sur un projet existant sans avoir Ă  le crĂ©er manuellement.

Exemple :

Pour cloner un dépÎt, exécutez la commande suivante :

git clone <url_du_dépÎt>

Cela crĂ©era un nouveau dossier avec le nom du dĂ©pĂŽt et tĂ©lĂ©chargera tout le contenu du dĂ©pĂŽt distant, y compris l’historique des commits.

Vous récupérer le code source ainsi que le dossier .git

Consultez la documentation officielle : Git Clone.

Pour aller plus loin, Authentification : ssh/https. Cela vous permez de notament récupéré des projet privé dont vous avez des droits ou propager vos modifications sans vous authentifier à chaque fois.

Gérer les DépÎts Distants

La commande git remote permet de gĂ©rer les connexions aux dĂ©pĂŽts distants. Vous pouvez l’utiliser pour ajouter, modifier ou supprimer des rĂ©fĂ©rences Ă  des dĂ©pĂŽts distants.

Exemple :

# Ajouter un nouveau dépÎt distant :
git remote add <nom> <url_du_dépÎt>
# Lister les dépÎts distants configurés
git remote -v

<nom> est souvent origin, qui est la convention pour le dépÎt distant principal.

Consultez la documentation officielle : Git Remote.

Récupérer les Modifications

La commande git pull est utilisĂ©e pour rĂ©cupĂ©rer et intĂ©grer les modifications d’un dĂ©pĂŽt distant dans votre branche locale.

Exemple :

Pour rĂ©cupĂ©rer les modifications de la branche principale d’un dĂ©pĂŽt distant :

git pull origin main

Cela mettra à jour votre branche locale avec les derniers changements du dépÎt distant.

Consultez la documentation officielle : Git Pull.

Pour aller plus loin, RĂ©cuperer des changements sans les intĂ©grer, Ă  l’aide de la commande git fetch

Envoyer des Modifications

La commande git push est utilisĂ©e pour envoyer vos modifications locales vers un dĂ©pĂŽt distant (dĂ©clarĂ© avec la commande remote). Cela permet de partager vos travaux avec d’autres dĂ©veloppeurs et de mettre Ă  jour le dĂ©pĂŽt central.

Exemple :

# Envoyer vos changements (commits) Ă  votre origin
git push
# Envoyer votre code a votre origin et déclarer une branche origin/branch
git push --set-upstream origin branch
# Envoyer votre code (commits) a votre origin en pushant la branche main
git push -u origin main

Cela mettra à jour le dépÎt distant avec les commits que vous avez effectués localement.

Consultez la documentation officielle : Git Push.

L’Ă©cosystĂšme Git : Issues, Pull Requests et Forks

Git s’inscrit dans un Ă©cosystĂšme Ă©tendu grĂące Ă  des plateformes comme GitHub et GitLab. Ces outils ont enrichi Git avec des fonctionnalitĂ©s supplĂ©mentaires pour une organisation collaborative plus structurĂ©e Ă  l’Ă©chelle macro-projet. Voici un aperçu des concepts clĂ©s : issues, pull requests et forks.


Glossaire des Concepts

Issues : Gestion des ProblĂšmes et des Demandes

Une issue est un ticket utilisĂ© pour signaler un bug, proposer une nouvelle fonctionnalitĂ©, ou discuter d’une amĂ©lioration. Les issues servent de point de dĂ©part pour organiser le travail collaboratif. Elles incluent souvent des descriptions dĂ©taillĂ©es, des captures d’écran, et des discussions entre contributeurs.

  • Cas d’usage :

    • Reporter un bug trouvĂ© dans le projet.
    • SuggĂ©rer une nouvelle fonctionnalitĂ©.
    • Suivre les tĂąches Ă  accomplir dans un projet.
  • Outils associĂ©s : GitHub, GitLab, Jira.
    Exemple d’issue sur GitHub : CrĂ©er une Issue GitHub.


Pull Requests (ou Merge Requests) : Proposition de Fusion de Code

Une pull request est une demande formelle pour intĂ©grer les modifications effectuĂ©es sur une branche vers une autre (souvent vers la branche principale). Elle est accompagnĂ©e d’un processus de revue de code oĂč d’autres dĂ©veloppeurs vĂ©rifient, commentent, et demandent des modifications avant la fusion finale.

  • Étapes typiques :

    1. Créer une branche dédiée pour votre travail.
    2. Faire des commits pour sauvegarder vos modifications.
    3. Soumettre une pull request pour demander la fusion de cette branche.
    4. Collaborer via des commentaires ou des suggestions dans la pull request.
    5. Fusionner la branche une fois approuvée.
  • Cas d’usage :

    • Ajouter une fonctionnalitĂ©.
    • Corriger un bug signalĂ© via une issue.
    • AmĂ©liorer la documentation.
  • Outils associĂ©s :


Forks : Copier un DépÎt Git pour le Personnaliser

Un fork est une copie indĂ©pendante d’un dĂ©pĂŽt Git, gĂ©nĂ©ralement utilisĂ©e pour travailler sur un projet sans modifier l’original. Il permet Ă  des dĂ©veloppeurs externes de contribuer Ă  des projets oĂč ils n’ont pas les droits d’Ă©criture ou de rĂ©cupĂ©rer un projet pour en crĂ©er une version diffĂ©rente.

  • Cas d’usage :

    • Contribution Ă  un projet open-source :
      1. Forker un projet public.
      2. Travailler sur la copie dans votre espace personnel.
      3. Soumettre une pull request pour proposer vos modifications.
    • Sauvegarde et Ă©volution d’un projet :
      • Lorsqu’un projet open-source est abandonnĂ© ou passe en privĂ©, un fork permet Ă  une communautĂ© ou Ă  une personne de continuer son dĂ©veloppement.
  • Outils associĂ©s :


Qu’est-ce qu’il est utile de versionner ?

Lorsqu’on commence Ă  versionner un projet avec Git, une question essentielle se pose : quels fichiers doit-on inclure dans le contrĂŽle de version ? Voici quelques explications pour guider vos choix et Ă©viter les erreurs courantes.


Comment fonctionne Git ?

Git fonctionne en sauvegardant des diffĂ©rences (deltas) entre les versions successives des fichiers. Cela signifie qu’il ne stocke pas une copie complĂšte de chaque version, mais uniquement les modifications apportĂ©es. Ce mĂ©canisme est particuliĂšrement efficace pour les fichiers texte, mais il peut rencontrer des limitations avec d’autres types de fichiers.


Type de fichiers et versionning

Les fichiers texte

Pour les fichiers texte (comme les fichiers .md, .txt, .py, etc.), Git excelle dans la gestion du versionnage.

  • Pourquoi ?

    • Les diffĂ©rences entre versions se limitent souvent Ă  quelques lignes modifiĂ©es, ce qui rend le stockage trĂšs lĂ©ger.
    • MĂȘme pour des dĂ©pĂŽts volumineux, l’empreinte mĂ©moire reste faible, car seules les modifications (en kilooctets) sont sauvegardĂ©es.
  • Exemple de fichiers Ă  versionner :

    • Code source.
    • Documentation en texte brut ou formatĂ©e (Markdown, LaTeX, etc.).

Les fichiers binaires et compressés

Pour des fichiers comme ceux de la suite Office ou LibreOffice, qui sont des fichiers compressés, le mécanisme différentiel de Git est moins efficace.

  • Pourquoi ?

    • Ces fichiers ne permettent pas de dĂ©tecter les modifications ligne par ligne, car toute modification peut entraĂźner un changement global du fichier.
    • Chaque nouvelle version de ces fichiers est sauvegardĂ©e en entier, ce qui alourdit rapidement le dĂ©pĂŽt.
  • Conseils :

    • Si possible, privilĂ©giez des formats texte Ă©quivalents (par exemple, .csv au lieu d’Excel pour les donnĂ©es).
    • Évitez de versionner des fichiers binaires volumineux, sauf si c’est absolument nĂ©cessaire.

Les fichiers générés automatiquement

Les fichiers gĂ©nĂ©rĂ©s automatiquement par des outils ou lors de la compilation (comme les fichiers de log ou les dossiers target en Java) n’ont pas besoin d’ĂȘtre versionnĂ©s.

  • Pourquoi ?

    • Ces fichiers peuvent ĂȘtre recréés Ă  tout moment Ă  partir des sources ou des outils de compilation.
    • Versionner ces fichiers encombre inutilement le dĂ©pĂŽt et crĂ©e des conflits inutiles.
  • Exemple de fichiers Ă  ignorer :

    • Dossiers de build (target/, dist/).
    • Fichiers de log (*.log).
    • Fichiers temporaires ou de sauvegarde (*.tmp, *.bak).

Les fichiers contenant des données sensibles

Attention : Une fois qu’un fichier est versionnĂ©, il reste accessible dans l’historique du dĂ©pĂŽt, mĂȘme s’il est supprimĂ© dans des commits ultĂ©rieurs.

  • Exemples de fichiers Ă  ne pas versionner :

    • Mots de passe ou clĂ©s d’API.
    • Informations personnelles ou confidentielles.
  • Bonne pratique :

    • Stockez les secrets dans des fichiers spĂ©cifiques (comme .env) qui ne sont pas versionnĂ©s.
    • Ajoutez ces fichiers Ă  votre .gitignore pour Ă©viter les erreurs.

Pour supprimer dĂ©finitivement un fichier sensible de l’historique Git : git-filter-repo ou BFG Repo Cleaner.


Mettre en place des rĂšgles de versionnage avec .gitignore

Git permet de contrÎler les fichiers inclus ou exclus du versionnage grùce à un fichier spécial nommé .gitignore, placé à la racine du dépÎt.

Fonctionnement du fichier .gitignore

  • Chaque ligne contient une expression qui correspond Ă  un ou plusieurs fichiers ou dossiers Ă  ignorer.

  • Exemple de contenu :

    # Ignorer tous les fichiers temporaires
    *.tmp
    
    # Ignorer le dossier build
    /build/
    
    # Ignorer les fichiers de configuration locaux
    .env
    
  • Outil utile :
    Pour générer un fichier .gitignore adapté à votre technologie ou langage, utilisez gitignore.io.

Consultez la documentation officielle pour plus d’informations : Git Ignore.


Travaux Pratiques

  1. Créer un compte GitHub :
    Si vous n’avez pas encore de compte, suivez ce guide pour en crĂ©er un, puis connectez-vous.

  2. Forker le repository du TP Git :
    Rendez-vous sur le repository du TP Git et forkez-le dans votre espace personnel (namespace). Un lien dans le cours explique comment réaliser un fork sur GitHub.

  3. Cloner votre fork en local :
    Récupérez une copie de votre fork sur votre machine locale.

  4. Lister les commits :
    Affichez les commits présents dans la branche main de votre repository.

  5. Modifier le README :
    Ajoutez une mention indiquant qu’il s’agit de votre fork du projet, directement via l’interface de GitHub.

  6. Ajouter un fichier .gitignore :
    CrĂ©ez un fichier .gitignore dans votre repository. N’oubliez pas de synchroniser les modifications apportĂ©es au README avec votre dĂ©pĂŽt local.

  7. Créer une branche pour une nouvelle fonctionnalité :
    CrĂ©ez une nouvelle branche dĂ©diĂ©e Ă  l’ajout d’une fonctionnalitĂ© permettant de supprimer un contact.

  8. Implémenter la fonctionnalité :

    • Ajoutez une option “3” au menu pour permettre Ă  l’utilisateur de supprimer un contact en renseignant son nom.
    • GĂ©rez les cas oĂč aucun contact ne correspond au nom saisi.
  9. Créer une nouvelle version :
    Validez vos modifications en créant un nouveau commit.

  10. Synchroniser avec le dépÎt distant :
    Poussez vos modifications sur votre fork distant.

  11. Fusionner votre branche avec main :
    Intégrez les changements de votre branche dans la branche main.

  12. (Bonus) :
    Envoyez votre code sur le GitLab du SSP Lab : GitLab SSP Cloud.