# Documentation Git
Git est un système de contrôle de version distribué qui permet de suivre les modifications de fichiers et de coordonner le travail entre plusieurs personnes. Cette documentation présente les commandes Git les plus courantes.
Pour installer Git :
sudo apt-get install git ''# Sur Debian/Ubuntu'' brew install git ''# Sur macOS avec Homebrew''
Configuration de base après installation :
git config --global user.name "Votre Nom" git config --global user.email "votre.email@exemple.com" git config --global core.editor "code" ''# Pour utiliser VS Code comme éditeur''
Pour créer un nouveau dépôt Git local :
git init
Pour copier un dépôt existant :
git clone https://github.com/utilisateur/depot.git git clone https://github.com/utilisateur/depot.git mon_dossier ''# Cloner dans un dossier spécifique''
Pour voir les fichiers modifiés et l'état actuel :
git status git status -s ''# Format court''
Pour ajouter des fichiers à l'index (staging area) :
git add fichier.txt ''# Ajouter un fichier spécifique'' git add dossier/ ''# Ajouter tous les fichiers d'un dossier'' git add *.js ''# Ajouter tous les fichiers .js'' git add . ''# Ajouter tous les fichiers modifiés'' git add -p ''# Ajouter des parties spécifiques des fichiers (mode interactif)''
Pour voir les modifications avant de les committer :
git diff ''# Différences entre les fichiers modifiés et l'index'' git diff --staged ''# Différences entre l'index et le dernier commit'' git diff HEAD ''# Différences entre les fichiers modifiés et le dernier commit'' git diff commit1 commit2 ''# Différences entre deux commits''
Pour sauvegarder les modifications :
git commit -m "Description du commit" git commit -a -m "Description" ''# Ajoute automatiquement les fichiers modifiés (pas les nouveaux)'' git commit --amend ''# Modifier le dernier commit''
Pour voir l'historique des commits :
git log git log --oneline ''# Format compact, une ligne par commit'' git log --graph --oneline --all ''# Affichage graphique de l'historique'' git log -p ''# Affiche également les différences de chaque commit'' git log -n 5 ''# Affiche les 5 derniers commits'' git log --author="nom" ''# Filtre par auteur''
Pour examiner un commit spécifique :
git show abcd1234 ''# Montre les détails d'un commit spécifique'' git show abcd1234:fichier.txt ''# Montre le contenu d'un fichier dans un commit spécifique''
Pour voir l'historique complet des actions Git :
git reflog ''# Utile pour récupérer des commits perdus''
Pour créer et gérer des branches :
git branch ''# Liste les branches'' git branch nom-branche ''# Crée une nouvelle branche'' git branch -d nom-branche ''# Supprime une branche'' git branch -m ancien-nom nouveau-nom ''# Renomme une branche''
Pour changer de branche :
git checkout nom-branche ''# Bascule vers une branche existante'' git checkout -b nouvelle-branche ''# Crée et bascule vers une nouvelle branche'' git checkout - ''# Retourne à la branche précédente''
Pour fusionner une branche dans la branche courante :
git merge nom-branche ''# Fusionne nom-branche dans la branche courante'' git merge --no-ff nom-branche ''# Fusion avec création d'un commit de fusion explicite'' git merge --abort ''# Annule une fusion en cours (en cas de conflits)''
Pour réorganiser l'historique des commits :
git rebase master ''# Réapplique les commits de la branche courante sur master'' git rebase -i HEAD~3 ''# Rebase interactif des 3 derniers commits''
Pour travailler avec des dépôts distants :
git remote ''# Liste les dépôts distants'' git remote -v ''# Liste détaillée des dépôts distants'' git remote add origin https://github.com/utilisateur/depot.git ''# Ajoute un dépôt distant'' git remote remove origin ''# Supprime un dépôt distant''
Pour synchroniser avec un dépôt distant :
git fetch origin ''# Récupère les modifications sans les fusionner'' git pull ''# Récupère et fusionne les modifications (fetch + merge)'' git pull --rebase ''# Récupère et réapplique les commits locaux (fetch + rebase)'' git push origin branche ''# Envoie les commits locaux vers le dépôt distant'' git push -u origin branche ''# Envoie et configure la branche distante comme upstream''
Pour annuler des modifications :
git checkout -- fichier.txt ''# Annule les modifications d'un fichier non indexé'' git restore fichier.txt ''# Équivalent moderne de git checkout -- fichier.txt'' git reset HEAD fichier.txt ''# Retire un fichier de l'index'' git restore --staged fichier.txt ''# Équivalent moderne de git reset HEAD fichier.txt''
Pour annuler des commits :
git reset --soft HEAD~1 ''# Annule le dernier commit mais conserve les modifications'' git reset --mixed HEAD~1 ''# Annule le dernier commit et l'indexation des fichiers'' git reset --hard HEAD~1 ''# Annule le dernier commit et supprime les modifications'' git revert HEAD ''# Crée un nouveau commit qui annule le dernier commit'' git revert abcd1234 ''# Crée un nouveau commit qui annule le commit spécifié''
Pour sauvegarder temporairement des modifications :
git stash ''# Sauvegarde les modifications en cours''
git stash save "message" ''# Sauvegarde avec un message descriptif''
git stash list ''# Liste les stashes''
git stash apply ''# Applique le dernier stash sans le supprimer''
git stash pop ''# Applique le dernier stash et le supprime''
git stash drop stash@{0} ''# Supprime un stash spécifique''
git stash clear ''# Supprime tous les stashes''
Pour marquer des points importants dans l'historique :
git tag ''# Liste les tags'' git tag v1.0.0 ''# Crée un tag léger'' git tag -a v1.0.0 -m "Version 1.0.0" ''# Crée un tag annoté'' git push origin v1.0.0 ''# Envoie un tag vers le dépôt distant'' git push origin --tags ''# Envoie tous les tags''
Pour récupérer après des erreurs :
git reflog ''# Affiche l'historique des actions Git'' git fsck --full ''# Vérifie l'intégrité du dépôt'' git checkout abcd1234 -- fichier.txt ''# Récupère un fichier à partir d'un commit spécifique''
Pour gérer les conflits de fusion :
git status ''# Identifie les fichiers en conflit'' git mergetool ''# Lance un outil visuel de résolution de conflits'' git add fichier.txt ''# Marque le fichier comme résolu après modification manuelle'' git commit ''# Termine la fusion après résolution des conflits''
Exemple de workflow Git typique pour un site web :
git pull ''# Toujours commencer par récupérer les modifications'' git checkout -b nouvelle-fonction ''# Créer une branche pour la nouvelle fonction'' ''# Faire les modifications nécessaires'' git add . ''# Ajouter les modifications'' git commit -m "Ajout de la fonction X" ''# Créer un commit'' git checkout main ''# Revenir à la branche principale'' git pull ''# Mettre à jour la branche principale'' git merge nouvelle-fonction ''# Fusionner la fonction'' git push ''# Pousser les modifications''
Exemples de bons messages de commit :
git commit -m "Fix: correction du bug d'authentification" git commit -m "Feature: ajout du formulaire de contact" git commit -m "Docs: mise à jour de la documentation d'installation" git commit -m "Style: formatage du code selon les normes du projet"