Git - Bases & Commandes Essentielles
Git est un système de contrôle de version distribué qui permet de suivre l'historique de votre code et de collaborer avec d'autres développeurs.
Pourquoi Git ?
- Sauvegarde : Hébergez votre code sur GitHub/GitLab
- Historique complet : Suivez chaque modification de votre code
- Collaboration : Travaillez à plusieurs sur le même projet
- Portfolio : Montrez vos projets aux recruteurs
- Retour arrière : Annulez des modifications si nécessaire
Démarrage rapide - Deux scénarios
Choisissez votre situation
Scénario A : Vous avez déjà du code local et voulez le pousser sur GitHub
Scénario B : Vous partez d'un dépôt GitHub existant (clone)
Scénario A : Pousser un projet existant sur GitHub
Étape 1 : Créer un dépôt sur GitHub
- Allez sur github.com et connectez-vous
- Cliquez sur le
+en haut à droite → "New repository" - Donnez un nom à votre dépôt (ex:
mon-projet-react) - N'ajoutez PAS de README, .gitignore ou LICENSE (le dépôt doit être vide)
- Cliquez sur "Create repository"
Étape 2 : Lier votre projet local
# Dans le dossier de votre projet
cd mon-projet
# Initialiser Git (si pas déjà fait)
git init
# Ajouter tous les fichiers
git add .
# Créer le premier commit
git commit -m "Initial commit"
# Ajouter le dépôt distant (remplacez par votre URL)
git remote add origin https://github.com/votre-username/mon-projet-react.git
# Vérifier que le remote est bien ajouté
git remote -v
# Pousser vers GitHub
git push -u origin main
Branche main vs master
Les nouveaux dépôts GitHub utilisent main comme branche principale. Si votre dépôt local utilise master, renommez-la :
git branch -M main
C'est fait ! Votre code est maintenant sur GitHub. Rafraîchissez la page GitHub pour voir vos fichiers.
Scénario B : Cloner un dépôt existant
# Cloner le dépôt (remplacez par l'URL du dépôt)
git clone https://github.com/username/repository.git
# Entrer dans le dossier
cd repository
# Vous pouvez maintenant travailler !
Astuce
Pour obtenir l'URL d'un dépôt GitHub :
- Allez sur la page du dépôt
- Cliquez sur le bouton vert "Code"
- Copiez l'URL HTTPS
Configuration initiale (obligatoire)
Vérifier l'installation
git --version
Si Git n'est pas installé, téléchargez-le depuis git-scm.com.
Configuration initiale
Configurez votre identité (obligatoire pour le premier commit) :
git config --global user.name "Votre Nom"
git config --global user.email "votre.email@example.com"
Vérifier la configuration :
git config --list
Astuce
Utilisez la même adresse email que celle de votre compte GitHub/GitLab pour que vos commits soient bien associés à votre profil.
Workflow quotidien - Les 5 commandes essentielles
Une fois votre projet lié à GitHub, voici le cycle de travail quotidien :
1. Vérifier l'état de vos fichiers
git status
Affiche :
- Les fichiers modifiés (en rouge)
- Les fichiers prêts à être commités (en vert)
- La branche actuelle
Astuce
Utilisez git status constamment ! C'est votre boussole pour savoir où vous en êtes.
2. Récupérer les modifications de vos collaborateurs
Faites TOUJOURS un git pull avant de commencer à travailler !
git pull
Cela récupère et fusionne les modifications de GitHub dans votre code local.
3. Ajouter vos modifications au staging
# Ajouter tous les fichiers modifiés
git add .
# Ou ajouter des fichiers spécifiques
git add src/App.js src/components/Header.js
4. Créer un commit (snapshot de vos modifications)
git commit -m "Ajoute la page de connexion"
Bonnes pratiques pour les messages :
- Soyez concis mais descriptif (50 caractères max)
- Utilisez l'impératif : "Ajoute" et non "Ajouté"
- Décrivez ce que fait le commit, pas comment
# ✅ Bons exemples
git commit -m "Ajoute la validation du formulaire"
git commit -m "Corrige le bug d'affichage mobile"
git commit -m "Refactorise le composant Header"
# ❌ Mauvais exemples
git commit -m "fix"
git commit -m "update"
git commit -m "wip"
5. Envoyer vos commits sur GitHub
git push
C'est tout ! Vos modifications sont maintenant sur GitHub.
Cycle quotidien complet
# Matin : récupérer les dernières modifications
git pull
# Vous travaillez sur votre code...
# (modifier des fichiers, ajouter des fonctionnalités)
# Vérifier ce qui a changé
git status
# Ajouter vos modifications
git add .
# Créer un commit
git commit -m "Description de vos modifications"
# Envoyer sur GitHub
git push
# Répéter ce cycle plusieurs fois par jour !
Conseil : Commitez souvent (plusieurs fois par jour), ne faites pas un énorme commit en fin de journée.
Commandes Git Remote (dépôts distants)
Voir les dépôts distants
# Lister les dépôts distants
git remote -v
# Résultat typique :
# origin https://github.com/username/repo.git (fetch)
# origin https://github.com/username/repo.git (push)
Ajouter un dépôt distant
git remote add origin https://github.com/username/repository.git
origin est le nom conventionnel pour le dépôt principal.
Changer l'URL d'un remote
# Si vous avez fait une erreur dans l'URL
git remote set-url origin https://github.com/username/nouveau-repo.git
Supprimer un remote
git remote remove origin
Push détaillé
# Premier push (crée la branche sur GitHub)
git push -u origin main
# Push suivants (plus simple)
git push
# Push d'une branche spécifique
git push origin feature/login
# Push en forçant (⚠️ ATTENTION : écrase l'historique distant)
git push --force
Ne jamais faire git push --force sur main !
git push --force écrase l'historique distant. Jamais sur la branche principale en équipe !
Utilisez-le uniquement sur vos branches personnelles si nécessaire.
Pull détaillé
# Pull simple (fetch + merge)
git pull
# Pull depuis une branche spécifique
git pull origin develop
# Pull équivaut à :
git fetch origin # Récupère les modifications
git merge origin/main # Fusionne dans votre branche
Fetch (récupérer sans fusionner)
# Récupérer les modifications sans les fusionner
git fetch origin
# Voir les différences avant de fusionner
git diff origin/main
# Fusionner quand vous êtes prêt
git merge origin/main
Utile pour voir ce qui a changé avant de fusionner.
Commandes complémentaires
Voir l'historique des commits
# Historique complet
git log
# Historique condensé (une ligne par commit)
git log --oneline
# Historique avec graphe des branches
git log --oneline --graph --all
# Derniers 5 commits
git log -5
Voir les différences
# Différences non staged (fichiers modifiés mais pas ajoutés)
git diff
# Différences staged (fichiers ajoutés avec git add)
git diff --staged
# Différences pour un fichier spécifique
git diff fichier.js
Branches
Les branches permettent de développer des fonctionnalités en parallèle sans affecter le code principal.
Créer et changer de branche
# Créer une nouvelle branche
git branch feature/login
# Changer de branche
git checkout feature/login
# Créer ET changer de branche (raccourci)
git checkout -b feature/login
Information
Avec Git 2.23+, vous pouvez utiliser git switch au lieu de git checkout :
git switch feature/login # Changer de branche
git switch -c feature/login # Créer et changer
Lister les branches
# Branches locales
git branch
# Toutes les branches (locales + distantes)
git branch -a
Fusionner une branche
# Se placer sur la branche de destination (ex: main)
git checkout main
# Fusionner la branche feature/login dans main
git merge feature/login
Supprimer une branche
# Supprimer une branche locale
git branch -d feature/login
# Forcer la suppression (si pas fusionnée)
git branch -D feature/login
GitFlow - Workflow de branches
GitFlow est une stratégie de gestion de branches pour organiser le développement.
Structure des branches
🌳 Branches principales
main(oumaster) - Code en production, toujours stabledevelop- Branche de développement, code en cours d'intégration
🌿 Branches temporaires
feature/nom-feature- Nouvelles fonctionnalitésbugfix/nom-bug- Corrections de bugshotfix/nom-hotfix- Corrections urgentes en productionrelease/v1.2.0- Préparation d'une release
Workflow typique
- Créer une branche pour une nouvelle fonctionnalité
git checkout develop
git checkout -b feature/user-authentication
- Développer et commiter
git add .
git commit -m "Ajoute le formulaire de connexion"
git commit -m "Ajoute la validation JWT"
- Pousser la branche sur GitHub
git push -u origin feature/user-authentication
-
Créer une Pull Request sur GitHub
- Aller sur GitHub
- Créer une Pull Request de
feature/user-authenticationversdevelop - Demander une revue de code
- Fusionner après validation
-
Mettre à jour develop localement
git checkout develop
git pull
- Supprimer la branche feature
git branch -d feature/user-authentication
git push origin --delete feature/user-authentication
Schéma GitFlow simplifié
main (production)
|
|--- release/v1.0 ---> merge vers main + develop
|
develop (intégration)
|
|--- feature/login ---> merge vers develop
|
|--- feature/profile ---> merge vers develop
|
|--- bugfix/navbar ---> merge vers develop
GitFlow simplifié pour petits projets
Pour des projets personnels ou en petite équipe, vous pouvez simplifier :
- main : Code en production
- feature/* : Branches de fonctionnalités qui fusionnent directement dans main
Pas besoin de develop si vous êtes seul ou en très petite équipe.
Commandes utiles
Annuler des modifications
# Annuler les modifications d'un fichier (non staged)
git checkout -- fichier.js
# Retirer un fichier du staging (après git add)
git reset HEAD fichier.js
# Annuler le dernier commit (garde les modifications)
git reset --soft HEAD~1
# Annuler le dernier commit (supprime les modifications)
git reset --hard HEAD~1
Attention avec reset --hard
git reset --hard supprime définitivement les modifications. À utiliser avec précaution !
Ignorer des fichiers
Créez un fichier .gitignore à la racine du projet :
# Dépendances
node_modules/
vendor/
# Fichiers de configuration locaux
.env
.env.local
# Fichiers de build
dist/
build/
.next/
# Fichiers IDE
.vscode/
.idea/
*.swp
# Fichiers système
.DS_Store
Thumbs.db
Stash (mettre de côté des modifications)
# Mettre de côté les modifications en cours
git stash
# Voir la liste des stash
git stash list
# Récupérer le dernier stash
git stash pop
# Récupérer un stash spécifique
git stash apply stash@{0}
Utile quand vous devez changer de branche rapidement sans commiter.
Tags (versions)
# Créer un tag annoté
git tag -a v1.0.0 -m "Version 1.0.0"
# Lister les tags
git tag
# Pousser un tag
git push origin v1.0.0
# Pousser tous les tags
git push --tags
Résolution de conflits
Un conflit survient quand deux personnes modifient la même ligne de code.
Détecter un conflit
git merge feature/login
# Auto-merging index.html
# CONFLICT (content): Merge conflict in index.html
# Automatic merge failed; fix conflicts and then commit the result.
Fichier en conflit
Git marque les conflits avec des marqueurs :
<<<<<<< HEAD
const message = "Hello from main";
=======
const message = "Hello from feature";
>>>>>>> feature/login
Résoudre le conflit
- Ouvrez le fichier et choisissez quelle version garder
- Supprimez les marqueurs
<<<<<<<,=======,>>>>>>> - Gardez le code final :
const message = "Hello from feature";
- Ajoutez et commitez :
git add fichier.js
git commit -m "Résout le conflit dans fichier.js"
Astuce
Utilisez un outil visuel comme VS Code, GitKraken, ou Sourcetree pour résoudre les conflits plus facilement.
Workflow avec branches (pour projets en équipe)
# 1. Créer une branche pour votre travail
git checkout -b feature/nouvelle-feature
# 2. Développer et commiter régulièrement
git add .
git commit -m "Ajoute la fonctionnalité X"
# 3. Pousser sur GitHub
git push -u origin feature/nouvelle-feature
# 4. Créer une Pull Request sur GitHub
# 5. Après fusion, mettre à jour main
git checkout main
git pull
git branch -d feature/nouvelle-feature
Commandes Git - Résumé
| Commande | Description |
|---|---|
git init | Initialiser un dépôt Git |
git clone URL | Cloner un dépôt distant |
git remote add origin URL | Lier un dépôt distant |
git remote -v | Voir les dépôts distants |
git status | Voir l'état des fichiers |
git pull | Récupérer les modifications distantes |
git add . | Ajouter tous les fichiers au staging |
git commit -m "message" | Créer un commit |
git push | Envoyer les commits sur GitHub |
git push -u origin main | Premier push (crée la branche) |
git checkout -b branche | Créer et changer de branche |
git merge branche | Fusionner une branche |
git log --oneline | Voir l'historique |
Ressources supplémentaires
Pro Git Book
Livre complet et gratuit sur Git (français disponible)
DocumentationGitHub Guides
Guides officiels pour débuter avec GitHub
TutorielVisualizing Git
Outil interactif pour comprendre Git visuellement
TutorielGitFlow Cheatsheet
Aide-mémoire sur le workflow GitFlow
DocumentationEn résumé
Pour démarrer avec GitHub :
- Créez un dépôt sur GitHub
git remote add origin URL- Lier votre projet localgit push -u origin main- Premier envoi
Les 5 commandes quotidiennes :
git pull- Récupérer les modifications (TOUJOURS en premier!)git status- Voir l'état actuelgit add .- Ajouter les fichiers modifiésgit commit -m "message"- Créer un commitgit push- Envoyer sur GitHub
Avec ces commandes, vous pouvez travailler efficacement avec Git et GitHub !