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.
Aucun prérequis technique. Cette fiche est conçue pour des débutants complets, même sans expérience en ligne de commande.
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. |
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. |
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. |
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.
| 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 |
✅ Réponse : Un instantané de l'état du projet à un moment donné
✅ Réponse : À préparer les fichiers avant de les committer
✅ Réponse : Le pointeur vers le commit actuel
✅ Réponse : Pour travailler sur des fonctionnalités en parallèle sans perturber la version stable
✅ Réponse : Git est décentralisé : chaque développeur possède l'historique complet