🌿 Qu'est-ce que Git ?
📖 Définition
Git est un système de contrôle de version distribué. Il suit et gère l'historique des modifications de code et permet à plusieurs développeurs de travailler simultanément. GitHub, GitLab et Bitbucket sont des services qui hébergent des dépôts Git, facilitant la collaboration et le partage de code.
🎯 Comprendre avec l'Analogie
Points de Sauvegarde de Jeu
Pensez à Git comme le système de sauvegarde d'un jeu :
- Commit : Sauvegarde du jeu - sauvegarde l'état actuel
- Branch : Monde parallèle - essayer différents choix tout en gardant l'histoire principale
- Merge : Combiner des mondes parallèles - appliquer de bons résultats à l'histoire principale
- Revert : Retourner à une sauvegarde précédente - récupérer en cas d'erreurs
⚙️ Fonctionnement
Les 3 Zones de Git
Working Directory (Répertoire de travail)
↓ git add
Staging Area (Zone de préparation)
↓ git commit
Repository (Dépôt)
↓ git push
Remote Repository (Dépôt distant)
Flux de Travail Git
1. Modifier les fichiers (Working Directory)
2. Préparer les modifications (Staging Area) → git add
3. Créer un commit (Local Repository) → git commit
4. Pousser vers distant (Remote Repository) → git push
💡 Exemples Réels
Commandes Git de Base
# Initialiser dépôt Git
git init
# Ou cloner dépôt distant
git clone https://github.com/username/repo.git
# Vérifier l'état
git status
# Préparer les modifications
git add index.html # Fichier spécifique
git add . # Tous les fichiers
# Créer commit
git commit -m "feat: Ajouter connexion utilisateur"
# Push (téléverser)
git push origin main
# Pull (télécharger)
git pull origin main
Opérations sur les Branches
# Vérifier les branches
git branch
# Créer nouvelle branche
git branch feature-login
# Changer de branche
git checkout feature-login
# Ou créer et changer simultanément
git checkout -b feature-login
# Méthode la plus récente (Git 2.23+)
git switch feature-login
git switch -c feature-login
# Fusionner branche
git checkout main
git merge feature-login
# Supprimer branche
git branch -d feature-login
Scénario de Collaboration
# === Développeur A ===
# 1. Cloner dépôt
git clone https://github.com/team/project.git
# 2. Créer nouvelle branche de fonctionnalité
git checkout -b feature-payment
# 3. Écrire du code et committer
git add .
git commit -m "Implémenter fonction de paiement"
# 4. Pousser vers distant
git push origin feature-payment
# 5. Créer Pull Request sur GitHub
# === Développeur B ===
# 1. Synchroniser le code le plus récent
git checkout main
git pull origin main
🤔 Questions Fréquentes
Q1. Quelle est la différence entre Git et GitHub ?
R :
Git (Outil)
├─ Système de contrôle de version (logiciel)
├─ Fonctionne sur ordinateur local
├─ Utilisé via ligne de commande (CLI)
└─ Gratuit, open source
GitHub (Service)
├─ Service d'hébergement de dépôts Git
├─ Plateforme basée sur le web
├─ Fonctions de collaboration (PR, Issue, Wiki)
└─ Partage de code et open source
Analogie : Git = Traitement de texte, GitHub = Google Docs
Q2. Comment écrire des messages de commit ?
R : Suivez des conventions claires et cohérentes :
# ✅ Bons messages de commit
git commit -m "feat: Ajouter API de connexion utilisateur"
git commit -m "fix: Résoudre erreur de clic sur bouton d'inscription"
git commit -m "refactor: Supprimer code dupliqué et séparer fonctions"
# ❌ Mauvais messages de commit
git commit -m "mise à jour"
git commit -m "corrigé bug"
git commit -m "en cours..."
# Règles Conventional Commits
feat: Nouvelle fonctionnalité
fix: Correction de bug
docs: Modifications de documentation
style: Formatage de code
refactor: Refactorisation de code
test: Ajout de tests
chore: Build, modifications de configuration
Q3. Différence entre Merge et Rebase ?
R :
# Merge
# - Préserve l'historique de branche tel quel
# - Crée commit de fusion
git checkout main
git merge feature-login
Résultat :
A---B---C---D main
\ /
E-----F feature-login
# Rebase
# - Déplace branche vers base différente
# - Maintient historique linéaire
git checkout feature-login
git rebase main
Résultat :
A---B---C---D main
\
E'---F' feature-login
# Quand utiliser ?
Merge: Collaboration en équipe, Pull Request
Rebase: Nettoyage de branche personnelle, historique propre
Q4. Comment résoudre les Conflits ?
R :
# Conflit se produit
git merge feature-login
# CONFLICT (content): Merge conflict in index.html
# Vérifier fichiers en conflit
git status
# Ouvrir fichier et résoudre manuellement
# <h1>Titre Final</h1>
# Marquer comme résolu
git add index.html
git commit -m "Merge branch 'feature-login' - conflit de titre résolu"
# Annuler fusion si nécessaire
git merge --abort
🎬 Résumé
Git est un outil essentiel pour le développement moderne :
- Contrôle de Version : Suit tout l'historique des modifications
- Collaboration : Plusieurs développeurs travaillent simultanément
- Branch : Expérimentation sécurisée et développement de fonctionnalités
- Récupération : Retourner à l'état précédent à tout moment
Maîtriser Git permet de gérer le code avec confiance et de collaborer efficacement en équipe ! 🌿✨