Introduction à Git et premiers commits
Introduction à Git et premiers commits
Pourquoi Git ?
Git est le système de gestion de version le plus utilisé au monde. Créé par Linus Torvalds en 2005 (le créateur de Linux), il permet de :
- Tracer chaque modification du code source
- Collaborer efficacement à plusieurs sur un même projet
- Revenir en arrière à n'importe quel moment
- Travailler en parallèle sur différentes fonctionnalités
Git vs les autres
| Aspect | Sans Git | Avec Git |
|---|---|---|
| Historique | projet-v1.zip, projet-v2-final.zip, projet-v2-FINAL-FINAL.zip |
Chaque modification est un commit daté et décrit |
| Collaboration | Envoyer des fichiers par email | Chacun travaille sur sa branche, on fusionne |
| Erreur | Impossible de revenir en arrière | git revert ou git checkout |
| Traçabilité | Qui a fait quoi ? Aucune idée | git blame, git log |
Installation et configuration
# Installer Git
# Ubuntu/Debian
sudo apt install git
# macOS
brew install git
# Vérifier l'installation
git --version
Configuration initiale
# Identité (obligatoire)
git config --global user.name "Sacha Martin"
git config --global user.email "sacha@example.com"
# Éditeur par défaut
git config --global core.editor "code --wait" # VS Code
# Branche par défaut
git config --global init.defaultBranch main
# Voir la configuration
git config --list
Les concepts fondamentaux
Les trois zones de Git
Répertoire de travail → Zone de staging → Dépôt local
(Working Directory) (Index / Stage) (Repository)
Fichiers modifiés git add git commit
que vous éditez ────────► ────────────►
Prêts à être Sauvegardés
committés dans l'historique
Créer un dépôt
# Initialiser un nouveau dépôt
mkdir mon-projet
cd mon-projet
git init
# Ou cloner un dépôt existant
git clone https://github.com/user/projet.git
git clone git@github.com:user/projet.git # Via SSH
Premiers commits
Le workflow de base
# 1. Voir l'état du dépôt
git status
# 2. Ajouter des fichiers au staging
git add fichier.txt # Un fichier spécifique
git add src/ # Tout un répertoire
git add . # Tous les fichiers modifiés
# 3. Créer un commit
git commit -m "Ajouter la page d'accueil"
# 4. Voir l'historique
git log
git log --oneline # Version compacte
git log --oneline --graph # Avec le graphe des branches
Exemple concret
# Créer un projet
mkdir site-web && cd site-web
git init
# Créer le premier fichier
echo "<!DOCTYPE html><html><body><h1>Mon site</h1></body></html>" > index.html
# Premier commit
git add index.html
git commit -m "Créer la page d'accueil"
# Modifier le fichier
echo "<p>Bienvenue sur mon site !</p>" >> index.html
# Voir les modifications
git diff # Différences non stagées
git diff --staged # Différences stagées
# Deuxième commit
git add index.html
git commit -m "Ajouter un paragraphe de bienvenue"
Voir l'historique en détail
# Historique complet
git log
# Historique compact
git log --oneline
# Historique avec les modifications
git log -p
# Les 5 derniers commits
git log -5
# Historique d'un fichier spécifique
git log -- src/app.js
# Qui a modifié chaque ligne ?
git blame src/app.js
# Voir un commit spécifique
git show abc1234
Le fichier .gitignore
Le .gitignore liste les fichiers que Git doit ignorer :
# Dépendances
node_modules/
vendor/
venv/
# Build
dist/
build/
*.o
*.class
# Environnement
.env
.env.local
*.env
# IDE
.vscode/
.idea/
*.swp
# OS
.DS_Store
Thumbs.db
# Logs
*.log
logs/
# Créer le .gitignore AVANT le premier commit
echo "node_modules/" > .gitignore
echo ".env" >> .gitignore
git add .gitignore
git commit -m "Ajouter .gitignore"
Annuler et corriger
Annuler des modifications
# Annuler les modifications d'un fichier (non stagé)
git checkout -- fichier.txt
# Ou (Git 2.23+)
git restore fichier.txt
# Retirer un fichier du staging (sans perdre les modifications)
git reset HEAD fichier.txt
# Ou (Git 2.23+)
git restore --staged fichier.txt
# Modifier le dernier commit (message ou fichiers oubliés)
git add fichier-oublie.txt
git commit --amend -m "Nouveau message de commit"
Revenir en arrière
# Créer un nouveau commit qui annule un commit précédent
git revert abc1234
# Revenir à un état précédent (⚠️ perte des commits suivants)
git reset --soft HEAD~1 # Garde les modifications en staging
git reset --mixed HEAD~1 # Garde les modifications non stagées
git reset --hard HEAD~1 # Supprime tout (⚠️ dangereux)
Stash — mettre de côté temporairement
# Sauvegarder les modifications en cours
git stash
git stash save "WIP: formulaire de contact"
# Lister les stashs
git stash list
# Récupérer le dernier stash
git stash pop # Applique et supprime
git stash apply # Applique sans supprimer
# Supprimer un stash
git stash drop stash@{0}
Bonnes pratiques pour les commits
- Un commit = une modification logique — ne mélangez pas les sujets
- Messages clairs et descriptifs : préférez "Corriger le calcul du prix TTC" à "fix bug"
- Committez souvent — de petits commits sont plus faciles à comprendre et reverter
- Ne committez jamais de secrets (.env, clés API, mots de passe)
- Utilisez le présent dans les messages : "Ajouter" plutôt que "Ajouté"
- Vérifiez avec
git statusetgit diffavant chaque commit