Skip to main content

📌 Aide-mémoire : Commandes Git essentielles et avancées

Retrouvez ici toutes les commandes clés pour versionner vos projets, gérer vos branches, nettoyer l'historique et résoudre les conflits. Utilisez la barre de recherche pour filtrer instantanément.

Initialiser un nouveau dépôt Git local dans le répertoire courantBases
git init
Cloner un dépôt distant localementBases
git clone <url_depot>
Afficher l'état des fichiers modifiés, indexés et non suivisBases
git status
Ajouter toutes les modifications du répertoire à la zone d'index (staging)Bases
git add .
Ajouter interactivement des blocs de modifications (hunks) à l'indexAvancé
git add -p
Enregistrer les modifications indexées avec un message descriptifBases
git commit -m "feat: message explicite"
Intégrer les changements indexés au dernier commit sans modifier son messageAvancé
git commit --amend --no-edit
Visualiser l'historique complet des commits sous forme d'arbre compactHistorique
git log --oneline --graph --decorate --all
Afficher les modifications non indexées par rapport au dernier commitBases
git diff
Afficher les différences entre les fichiers indexés et le dernier commitBases
git diff --staged
Créer et basculer immédiatement sur une nouvelle branche localeBranches
git switch -c <nom-branche>
Basculer sur une branche existanteBranches
git switch <nom-branche>
Supprimer une branche locale fusionnée en toute sécuritéBranches
git branch -d <nom-branche>
Forcer la suppression d'une branche locale, même non fusionnéeBranches
git branch -D <nom-branche>
Récupérer les métadonnées distantes et supprimer les références de branches obsolètesRemote
git fetch --prune
Mettre à jour la branche locale en rejouant ses commits au-dessus de la branche distanteRemote
git pull --rebase origin <branche>
Pousser une nouvelle branche locale sur le serveur et configurer le trackingRemote
git push -u origin <branche>
Forcer le push après un rebase en vérifiant qu'aucun commit tiers n'a été ajouté entre-tempsAvancé
git push --force-with-lease
Mettre de côté les modifications en cours de travail avec un message descriptifStash
git stash push -m "sauvegarde temporaire"
Réappliquer les dernières modifications remisées et les supprimer de la pileStash
git stash pop
Lister l'ensemble des remises (stashes) en mémoireStash
git stash list
Fusionner la branche spécifiée dans la branche couranteBases
git merge <nom-branche>
Démarrer un rebase interactif sur les n derniers commits pour combiner, modifier ou supprimerAvancé
git rebase -i HEAD~<n>
Appliquer un commit précis provenant d'une autre branche sur la branche actuelleAvancé
git cherry-pick <commit_sha>
Créer un nouveau commit qui annule rigoureusement les effets du commit cibléAvancé
git revert <commit_sha>
Annuler le dernier commit tout en conservant les modifications dans la zone d'indexReset
git reset --soft HEAD~1
Supprimer définitivement le dernier commit et annuler toutes les modifications associéesReset
git reset --hard HEAD~1
Annuler les modifications non indexées d'un fichier dans l'espace de travailBases
git restore <fichier>
Retirer un fichier de la zone d'index sans perdre ses modifications localesBases
git restore --staged <fichier>
Afficher le journal de toutes les actions et déplacements de HEAD (idéal pour récupérer un commit perdu)Debug
git reflog
Lancer une recherche dichotomique automatique pour isoler le commit ayant introduit un bugDebug
git bisect start && git bisect bad && git bisect good <commit_ok>
Supprimer tous les fichiers et dossiers non suivis (untracked) du répertoire de travailNettoyage
git clean -fd

💡 Raccourcis et configurations globales recommandées​

Configuration / CommandeDescription
git config --global init.defaultBranch mainDéfinit main comme nom de branche par défaut pour tout nouveau dépôt.
git config --global pull.rebase trueConfigure git pull pour utiliser automatiquement le mode rebase plutôt qu'un commit de merge.
git config --global rebase.autoStash trueRemise (stash) automatiquement le travail en cours avant un rebase, puis le réapplique.
git config --global core.autocrlf inputHarmonise les fins de ligne (LF) sur Linux et macOS sans corrompre les fichiers.
HEADPointeur vers le commit courant sur la branche active.
HEAD~1 / HEAD^Fait référence au parent direct du commit courant.