Introduction à Git & Contrôle de Version
Git est le système de contrôle de version le plus utilisé au monde. Il permet de suivre chaque modification du code et de collaborer à plusieurs sur un même projet.
Qu'est-ce que le contrôle de version ?
Le contrôle de version (ou "source control") = pratique de suivre et gérer les changements apportés au code source.
Sans Git Avec Git
────────────────── ──────────────────────────────
projet-v1.zip ✓ Historique complet de chaque modification
projet-v2-FINAL.zip ✓ Chaque changement étiqueté avec un message
projet-v2-VRAIMENT-FINAL.zip ✓ Possibilité de revenir à n'importe quelle version
projet-v3-ok-celui-la.zip ✓ Collaboration simultanée sans conflit
Ce que Git permet
- Historique complet : chaque modification est enregistrée avec qui, quand et pourquoi
- Revenir en arrière : annuler n'importe quel commit si nécessaire
- Collaboration : plusieurs développeurs travaillent simultanément sur le même projet
- Code centralisé : hébergé en ligne, accessible depuis partout
Concepts fondamentaux
Repository (Dépôt)
Un repository (repo) = l'espace de stockage de votre projet et de son historique.
Code Repository (hébergé sur internet)
│
▼
┌──────────────────────────────┐
│ Développeur 1 (Local Repo) │
│ Développeur 2 (Local Repo) │ ← Chaque dev a une copie complète en local
│ Développeur 3 (Local Repo) │
└──────────────────────────────┘
- Le code est hébergé centralement sur internet (GitHub, GitLab...)
- Chaque développeur a une copie complète du code en local
Commit — Unité de changement
Un commit = une "photo" (snapshot) de votre code à un instant T.
Fix button... → Version 1 (commit 1)
Add list for... → Version 2 (commit 2)
Update styles... → Version 3 (commit 3) ← HEAD (version actuelle)
- Chaque commit a un message descriptif
- Chaque commit a un hash unique (identifiant)
- On peut revenir à n'importe quel commit à tout moment
Les 3 concepts clés de Git
| Concept | Description |
|---|---|
| Remote Repository | Où le code est hébergé (GitLab, GitHub, Bitbucket...) |
| Local Repository | Copie locale du code sur votre machine |
| Git Client | Outil pour exécuter les commandes Git (CLI ou UI) |
Serveur Git (remote)
┌─────────────────────┐
│ Git Repository │◄──── git push (envoyer)
│ (remote) │────► git pull (récupérer)
└─────────────────────┘
│
┌────┴────┐
▼ ▼
Local Repo Local Repo
(Dev 1) (Dev 2)
Merge et conflits
Fusion automatique
La plupart du temps, Git fusionne automatiquement les changements de plusieurs développeurs.
Merge Conflict (conflit de fusion)
Un conflit survient quand deux développeurs modifient la même ligne du même fichier.
Dev 1 modifie la ligne 42 de app.js ─┐
Dev 2 modifie la ligne 42 de app.js ─┤── CONFLIT → résolution manuelle requise
Bonne pratique :
git pushetgit pullsouvent pour rester synchronisé et éviter les conflits. Les changements d'un autre développeur ne vous affectent pas tant que vous n'avez pas faitgit pull.
Pourquoi Git est essentiel pour le DevOps ?
Cas 1 — Infrastructure as Code (IaC)
Un ingénieur DevOps écrit du code pour créer l'infrastructure :
├── Fichiers Terraform (.tf) → provisionner AWS, Azure...
├── Fichiers Ansible (.yaml) → configurer des serveurs
├── Fichiers Kubernetes (.yaml) → déployer des applications
└── Scripts Python → automatiser des tâches
→ Ces fichiers doivent vivre dans un repo Git comme n'importe quel code !
Cas 2 — Scripts d'automatisation
Scripts shell ou Python qui :
├── Déploient des applications
├── Configurent des serveurs
├── Gèrent des sauvegardes
→ Trackés, versionnés, partagés avec l'équipe via Git
Cas 3 — Pipelines CI/CD
CI (Continuous Integration) :
Chaque merge → checkout du code → tests → build automatique
Jenkins / GitLab CI / GitHub Actions intègrent Git pour :
├── Récupérer le hash du commit qui a déclenché le build
├── Vérifier si les changements sont dans frontend ou backend
└── Déployer uniquement si les tests passent
| Bénéfice | Description |
|---|---|
| Tracé | Historique de qui a changé quoi |
| Stocké de façon sécurisée | Code centralisé, pas perdu si un PC tombe en panne |
| Partageable | Collaboration en équipe facilitée |
| Versionné | Rollback possible à n'importe quel état |
À retenir
- Git = système de contrôle de version distribué, le plus utilisé au monde
- Repository = espace de stockage du projet (remote = en ligne, local = sur votre machine)
- Commit = snapshot du code à un instant T, avec message descriptif
- Chaque développeur a une copie complète du code en local
- Merge Conflict = deux devs modifient la même ligne → résolution manuelle
- Bonne pratique : pusher et puller souvent pour éviter les conflits
- DevOps : Git est indispensable pour IaC, scripts d'automatisation et pipelines CI/CD