Git — Guide de référence complet¶
Configuration¶
Voir la configuration¶
git config --list # Toute la configuration
git config --list --show-origin # Avec l'origine de chaque paramètre
git config user.name # Un paramètre spécifique
Modifier la configuration¶
# Niveau global (tous les projets)
git config --global user.name "Ton Nom"
git config --global user.email "toi@example.com"
# Niveau local (projet courant seulement)
git config --local user.name "Autre Nom"
# Supprimer un paramètre
git config --global --unset user.name
Les niveaux de priorité (du plus fort au plus faible) : local > global > system
Le fichier de config global se trouve dans ~/.gitconfig.
Mettre en place une nouvelle configuration¶
git config --global user.name "Ton Nom"
git config --global user.email "toi@example.com"
git config --global core.editor "code --wait" # VS Code
git config --global init.defaultBranch main
git config --global core.autocrlf input # Fin de ligne Linux/Mac
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
Commandes essentielles¶
Initialisation & Clonage¶
git init # Initialiser un dépôt local
git clone <url> # Cloner un dépôt distant
git clone <url> mon-dossier # Cloner dans un dossier spécifique
État & Historique¶
git status # État des fichiers
git log # Historique des commits
git log --oneline --graph --all # Historique visuel compact
git diff # Modifications non indexées
git diff --staged # Modifications indexées
Staging & Commit¶
git add . # Indexer tous les fichiers
git add fichier.txt # Indexer un fichier précis
git commit -m "message" # Committer
git commit -am "message" # Add + commit (fichiers déjà suivis)
git commit --amend # Modifier le dernier commit
Branches¶
git branch # Lister les branches
git branch ma-branche # Créer une branche
git switch ma-branche # Changer de branche
git switch -c ma-branche # Créer + basculer
git branch -d ma-branche # Supprimer une branche
git merge ma-branche # Fusionner dans la branche courante
Synchronisation avec le distant¶
git fetch # Récupérer sans fusionner
git pull # Récupérer + fusionner
git push # Envoyer les commits
git push origin ma-branche # Pusher une branche spécifique
git push --delete origin ma-branche # Supprimer une branche distante
Annulation & Corrections¶
git restore fichier.txt # Annuler les modifs d'un fichier
git restore --staged fichier.txt # Désindexer un fichier
git revert <commit> # Annuler un commit (sans réécrire l'historique)
git reset --soft HEAD~1 # Annuler le dernier commit (garde les modifs)
git reset --hard HEAD~1 # Annuler le dernier commit (supprime les modifs)
⚠️
reset --hardest destructif, à utiliser avec précaution.
Stash¶
git stash # Mettre de côté les modifs en cours
git stash pop # Récupérer les modifs
git stash list # Voir tous les stashs
git stash drop # Supprimer le dernier stash
Tags¶
git tag v1.0.0 # Créer un tag
git tag -a v1.0.0 -m "Release" # Tag annoté
git push origin v1.0.0 # Pusher un tag
git push origin --tags # Pusher tous les tags
Commandes pratiques bonus¶
git shortlog -sn # Contributions par auteur
git blame fichier.txt # Qui a écrit chaque ligne
git bisect start # Trouver quel commit a introduit un bug
git cherry-pick <commit> # Appliquer un commit spécifique sur la branche courante
Créer un dépôt distant depuis la ligne de commande¶
GitHub (avec gh CLI)
gh repo create mon-projet --public # Dépôt public
gh repo create mon-projet --private # Dépôt privé
gh repo create mon-projet --public --source=. --push # Depuis le dossier courant
GitLab (avec glab CLI)
glab repo create mon-projet --public
Avec curl et l'API GitHub (sans CLI)
curl -u "ton-username" \
-X POST https://api.github.com/user/repos \
-d '{"name":"mon-projet","private":false}'
Lier un dépôt local à un remote existant¶
git init
git remote add origin https://github.com/username/mon-projet.git
git add .
git commit -m "Initial commit"
git push -u origin main # -u définit origin/main comme branche de suivi par défaut
Vérifier la configuration remote¶
git remote -v
Liens connexes¶
- shared/claude-code-shell-mingw-chemins — contexte WSL/Git Bash dans lequel ces commandes s'exécutent