Introduction à Git
Qu'est-ce que Git ?
Git est un système de contrôle de version distribué créé en 2005 par Linus Torvalds, le créateur de Linux. C'est aujourd'hui le système de versioning le plus utilisé dans le monde du développement logiciel.
Qu'est-ce qu'un système de contrôle de version ?
Un système de contrôle de version (ou versioning) est un outil qui permet de :
- Conserver un historique complet de toutes les modifications d'un projet
- Collaborer avec d'autres développeurs sans écraser leur travail
- Revenir en arrière en cas de problème
- Comparer les différentes versions du code
- Identifier qui a fait quelle modification et quand
Pourquoi Git est essentiel ?
Git est devenu un standard incontournable pour tout développeur. Voici pourquoi :
- Utilisé partout : 90% des entreprises utilisent Git
- Open source : Gratuit et libre
- Distribué : Chaque développeur a une copie complète du projet
- Rapide : Opérations très performantes
- Flexible : S'adapte à tous les workflows
- Sécurisé : Historique immuable et vérifiable
Comment fonctionne Git ?
Le principe fondamental
Git enregistre des snapshots (instantanés) de votre projet à chaque modification validée. Chaque snapshot est appelé un commit.
Projet initial → Modification 1 → Modification 2 → Modification 3
(v1) (v2) (v3) (v4)
Chaque commit contient :
- Les fichiers modifiés
- L'auteur de la modification
- La date et l'heure
- Un message décrivant la modification
- Un identifiant unique (hash SHA-1)
Modèle distribué
Contrairement à des systèmes centralisés (SVN, Perforce), Git utilise un modèle distribué :
Système centralisé (SVN) :
Serveur central
↓
Développeur A ← Doit être connecté au serveur
Développeur B ← Doit être connecté au serveur
Système distribué (Git) :
Serveur distant (GitHub, GitLab)
↓
Développeur A (copie complète du projet)
Développeur B (copie complète du projet)
Avantages du modèle distribué :
- Travail possible hors ligne
- Sécurité : chaque développeur a une copie complète (backup)
- Performance : opérations locales très rapides
- Flexibilité : plusieurs workflows possibles
Les concepts clés de Git
Git organise votre travail en trois zones :
- Working Directory (Répertoire de travail): Les fichiers sur lesquels vous travaillez actuellement sur votre machine.
- Staging Area (Zone de transit): Zone intermédiaire où vous préparez les fichiers avant de les commiter.
- Repository (Dépôt): L'historique complet de votre projet avec tous les commits.
Workflow typique :
1. Modifier des fichiers → Working Directory
2. Ajouter à la staging area → git add
3. Créer un commit → git commit
4. Envoyer au serveur distant → git push
Repository (Dépôt)
Un repository (ou repo) est un projet géré par Git. Il contient :
- Tous vos fichiers
- L'historique complet des modifications
- Les branches
- Les tags
Commit
Un commit est un snapshot de votre projet à un instant donné. C'est comme une sauvegarde que vous pouvez nommer et retrouver facilement.
git commit -m "feat: add user authentication"
Branch (Branche)
Une branche est une ligne de développement indépendante. Elle permet de travailler sur une fonctionnalité sans impacter le code principal.
main → A → B → C → D
↓
feature → E → F
Merge (Fusion)
Le merge combine deux branches ensemble.
main → A → B → C → D → G (merge)
↓ ↑
feature → E ────→ F ──┘
Remote (Distant)
Un remote est une version de votre projet hébergée sur un serveur (GitHub, GitLab, etc.).
Exemple usuel
Voici un exemple typique d'utilisation quotidienne :
# Matin : récupérer les dernières modifications
git pull origin main
# Créer une branche pour travailler
git checkout -b fix/bug-login
# Modifier des fichiers
# ... code, code, code ...
# Voir ce qui a changé
git status
git diff
# Ajouter les modifications
git add src/auth/login.ts
# Créer un commit
git commit -m "fix: resolve login validation error"
# Envoyer sur GitHub
git push origin fix/bug-login
# Créer une Pull Request
# Attendre la revue de code
# Merger !