| Configuration Git | |
|---|---|
| Objectif | Commande |
| 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 |