Sommaire
Comprendre ce qu'est Git, pourquoi l'utiliser, et maîtriser les concepts clés (dépôt, commit, branche, historique) sans se noyer dans les commandes.
🎯 Objectifs de la fiche
- Qu'est-ce que Git ? — Définition, histoire, différence avec GitHub
- Pourquoi versionner son code ? — Avantages du contrôle de version
- Les concepts clés — Dépôt, commit, branche, tag, HEAD, index
- Workflow de base (sans les commandes) — Comprendre le cycle de vie d'un fichier versionné
- Git vs autres outils — Comparaison avec Subversion (SVN), Mercurial
Prérequis
Aucun prérequis technique. Cette fiche est conçue pour des débutants complets, même sans expérience en ligne de commande.
1. Qu'est-ce que Git ?
Git est un logiciel de gestion de versions (version control system) créé en 2005 par Linus Torvalds (le créateur de Linux) pour gérer le développement du noyau Linux. Il se distingue par ses caractéristiques clés :
| Caractéristique | Description |
|---|---|
| Décentralisé | Chaque développeur possède une copie complète de l'historique sur sa machine. Pas de dépendance à un serveur central. |
| Historique complet | Toutes les modifications sont conservées indéfiniment, avec leur auteur, date et message. |
| Branches légères | Créer une branche coûte très peu en ressources, ce qui encourage l'expérimentation. |
| Intégrité | Chaque commit est identifié par un hash SHA-1 qui garantit son intégrité. |
| Performance | Les opérations (commit, diff, log) sont très rapides, même sur de gros projets. |
2. Pourquoi versionner son code ? (ou ses fichiers)
Imaginez que vous travaillez sur un projet de site web. Vous commencez par un fichier index.html. Puis vous le modifiez, vous créez un style.css, etc. Voici la différence entre travailler sans et avec Git :
| Sans Git | Avec Git |
|---|---|
| Sauvegardes manuelles : index.html, index_v2.html, index_final.html, index_final_vrai.html... c'est le bazar. | Un historique propre : chaque modification est un commit avec un message explicatif. |
| Impossible de savoir qui a fait quoi, ni pourquoi. | Chaque commit est signé (auteur, date, message). |
| Si vous cassez tout, vous ne pouvez pas revenir en arrière facilement. | Vous pouvez consulter l'historique complet et restaurer n'importe quelle version en un clic. |
| Pas de possibilité d'expérimenter sans risquer de casser la version stable. | Les branches permettent d'expérimenter en toute sécurité, sans toucher à la version stable. |
| Difficile de collaborer à plusieurs sans s'écraser. | Git gère les fusions (merge) et les conflits de manière structurée. |
3. Les concepts clés de Git
Voici les concepts fondamentaux à connaître pour comprendre Git :
| Concept | Définition | Analogie |
|---|---|---|
| Dépôt (repository) | Un dossier versionné par Git, contenant tous les fichiers et l'historique. | Un classeur où chaque page est une version du projet. |
| Commit | Un enregistrement (instantané) de l'état des fichiers à un instant T, avec un message. | Une photo du projet à un moment donné, avec une légende. |
| Index (staging area) | Une zone tampon où l'on prépare les fichiers avant de les committer. | Le bureau où l'on pose les copies à ranger avant de les archiver. |
| Branche (branch) | Une ligne de développement indépendante, qui permet de travailler en parallèle. | Une ramification de l'arbre : on peut suivre plusieurs chemins différents. |
| HEAD | Un pointeur qui indique où vous vous trouvez actuellement (la dernière version que vous avez consultée). | La page du classeur que vous avez ouverte en ce moment. |
| Tag | Un marqueur (étiquette) sur un commit pour identifier une version importante (ex: v1.0). | Un post-it sur une page du classeur pour la retrouver facilement. |
| Remote (dépôt distant) | Une copie du dépôt hébergée sur un serveur (GitHub, GitLab, etc.) pour partager et collaborer. | Un classeur en ligne que toute l'équipe peut consulter et modifier. |
4. Le cycle de vie d'un fichier dans Git
Pour bien comprendre Git, il faut visualiser les états par lesquels passe un fichier : 1. Working Directory : votre répertoire de travail avec les fichiers tels que vous les éditez. 2. Index (Staging Area) : vous ajoutez un fichier pour préparer son enregistrement. 3. Dépôt (Local) : vous committez, le fichier est enregistré définitivement dans l'historique. On peut aussi restaurer une version depuis le dépôt vers le working directory.
5. Git vs autres outils de versionnement
| Critère | Git | SVN (Subversion) | Mercurial |
|---|---|---|---|
| Architecture | Décentralisé | Centralisé | Décentralisé |
| Historique | Complet localement | Un seul historique sur le serveur | Complet localement |
| Branches | Très légères et nombreuses | Lourdes (copies de dossiers) | Légères |
| Performances | Très rapide | Lent pour les gros projets | Rapide |
| Courbe d'apprentissage | Raide | Facile | Modérée |
| Popularité | Très répandu | En déclin | Niche |
Qu'est-ce qu'un commit dans Git ?
✅ Réponse : Un instantané de l'état du projet à un moment donné
À quoi sert l'index (staging area) dans Git ?
✅ Réponse : À préparer les fichiers avant de les committer
Que signifie 'HEAD' dans Git ?
✅ Réponse : Le pointeur vers le commit actuel
Pourquoi utilise-t-on des branches dans Git ?
✅ Réponse : Pour travailler sur des fonctionnalités en parallèle sans perturber la version stable
Laquelle de ces affirmations est vraie concernant Git ?
✅ Réponse : Git est décentralisé : chaque développeur possède l'historique complet