Aller au contenu

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 --hard est 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