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

  1. Un commit = une modification logique — ne mélangez pas les sujets
  2. Messages clairs et descriptifs : préférez "Corriger le calcul du prix TTC" à "fix bug"
  3. Committez souvent — de petits commits sont plus faciles à comprendre et reverter
  4. Ne committez jamais de secrets (.env, clés API, mots de passe)
  5. Utilisez le présent dans les messages : "Ajouter" plutôt que "Ajouté"
  6. Vérifiez avec git status et git diff avant chaque commit