Configuration Git
ObjectifCommande
Configurer nom utilisateur git config --global user.name "Mon Nom"
Configurer email git config --global user.email "email@example.com"
Voir toute la configuration git config --list
Configurer l'éditeur par défaut git config --global core.editor "code --wait"
Alias personnalisés git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
Création et Clonage
Créer un nouveau dépôt git init
git init nom-projet
Cloner un dépôt distant git clone https://github.com/user/repo.git
Cloner dans un dossier spécifique git clone https://github.com/user/repo.git mon-dossier
Cloner une branche spécifique git clone -b develop https://github.com/user/repo.git
État et Informations
Voir l'état du dépôt git status
Voir l'état en version courte git status -s
Voir les différences non indexées git diff
Voir les différences indexées git diff --staged
Voir les différences d'un fichier git diff fichier.txt
Ajout et Commits
Ajouter un fichier à l'index git add fichier.txt
Ajouter tous les fichiers git add .
Ajouter par extension git add *.html
Commiter avec message git commit -m "Message du commit"
Commiter en ajoutant tout git commit -a -m "Message"
Modifier le dernier commit git commit --amend -m "Nouveau message"
Commiter avec description longue git commit (ouvre l'éditeur)
Branches
Lister les branches git branch
git branch -a (toutes, y compris distantes)
Créer une branche git branch nouvelle-branche
Créer et se positionner sur une branche git checkout -b nouvelle-branche
git switch -c nouvelle-branche (moderne)
Changer de branche git checkout nom-branche
git switch nom-branche (moderne)
Renommer une branche git branch -m ancien-nom nouveau-nom
Supprimer une branche git branch -d nom-branche
git branch -D nom-branche (forcer)
Fusionner une branche git checkout master
git merge nouvelle-branche
Voir les branches fusionnées git branch --merged
Historique
Voir l'historique des commits git log
Historique sur une ligne git log --oneline
Historique graphique git log --graph --oneline --all
Historique avec différences git log -p
git log -p -2 (2 derniers commits)
Historique par auteur git log --author="Nom"
Historique par date git log --since="2026-01-01"
git log --after="2 weeks ago"
Voir un commit spécifique git show <hash>
Voir qui a modifié chaque ligne git blame fichier.txt
Historique des actions (reflog) git reflog
Annulation et Reset
Annuler les modifications d'un fichier git checkout -- fichier.txt
git restore fichier.txt (moderne)
Désindexer un fichier git reset HEAD fichier.txt
git restore --staged fichier.txt (moderne)
Annuler le dernier commit (garder les fichiers) git reset --soft HEAD~1
Annuler le dernier commit (supprimer les modifs) git reset --hard HEAD~1
Revenir à un commit spécifique git reset --hard <hash>
Créer un commit qui annule un autre git revert <hash>
Stash (Remisage)
Sauvegarder temporairement les modifications git stash
git stash save "Message"
Lister les stash git stash list
Appliquer le dernier stash git stash pop
Appliquer un stash spécifique git stash apply stash@{0}
Supprimer un stash git stash drop stash@{0}
Supprimer tous les stash git stash clear
Dépôts Distants
Voir les dépôts distants git remote -v
Ajouter un dépôt distant git remote add origin https://github.com/user/repo.git
Supprimer un dépôt distant git remote remove origin
Renommer un dépôt distant git remote rename origin new-origin
Récupérer les données distantes git fetch origin
Récupérer et fusionner git pull origin master
Pousser vers le dépôt distant git push origin master
Pousser une nouvelle branche git push -u origin nouvelle-branche
Pousser tous les tags git push --tags
Supprimer une branche distante git push origin --delete nom-branche
Tags
Lister les tags git tag
Créer un tag léger git tag v1.0
Créer un tag annoté git tag -a v1.0 -m "Version 1.0"
Tag un commit spécifique git tag -a v1.0 <hash>
Voir les infos d'un tag git show v1.0
Supprimer un tag local git tag -d v1.0
Supprimer un tag distant git push origin --delete v1.0
Rebase
Rebaser sur une branche git rebase master
Rebase interactif (modifier l'historique) git rebase -i HEAD~3
Continuer après résolution de conflit git rebase --continue
Annuler un rebase git rebase --abort
Gestion de Fichiers
Déplacer/Renommer un fichier git mv ancien.txt nouveau.txt
Supprimer un fichier git rm fichier.txt
Supprimer de Git mais garder en local git rm --cached fichier.txt
Ignorer des fichiers (.gitignore) Créer un fichier .gitignore avec :
*.log
node_modules/
.env
*.tmp
Résolution de Conflits
Voir les fichiers en conflit git status
Ouvrir un outil de merge git mergetool
Accepter la version locale git checkout --ours fichier.txt
Accepter la version distante git checkout --theirs fichier.txt
Format d'un conflit :

Éditer le fichier, supprimer les marqueurs, puis : git add fichier.txt && git commit
Nettoyage
Supprimer les fichiers non suivis git clean -n (prévisualisation)
git clean -f (supprimer)
Supprimer aussi les dossiers git clean -fd
Nettoyer les branches locales déjà fusionnées git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
Workflows et Bonnes Pratiques
Commits conventionnels feat: nouvelle fonctionnalité
fix: correction de bug
docs: documentation
style: formatage du code
refactor: refactorisation
test: ajout de tests
chore: tâches de maintenance

Exemple : feat: ajout du système d'authentification
Workflow Git Flow - main/master : production
- develop : développement
- feature/ : nouvelles fonctionnalités
- hotfix/ : corrections urgentes
- release/ : préparation de version
Fichier .gitignore recommandé
Commandes Avancées
Cherry-pick (appliquer un commit spécifique) git cherry-pick <hash>
Rechercher dans l'historique git log --all --grep="mot-clé"
Trouver quel commit a introduit un bug git bisect start
git bisect bad (version actuelle bugguée)
git bisect good <hash> (version OK)
Archiver le projet git archive --format=zip --output=projet.zip HEAD
Voir la taille du dépôt git count-objects -vH
Optimiser le dépôt git gc --aggressive