Référence des Commandes Git
Manuel de référence complet des commandes Git, organisé par catégorie pour recherche rapide
Commandes basiques(13)
Créer un nouveau dépôt Git dans le dossier courant
Cloner un dépôt distant localement
Clone superficiel, récupérer uniquement le dernier commit
Ajouter fichier à la zone de staging
Ajouter tous les changements à la zone de staging
Commiter les changements staged
Modifier le dernier commit
Afficher le statut actuel du dépôt
Afficher les changements unstaged
Afficher les changements staged
Afficher toute la configuration
Définir le nom d'utilisateur global
Définir l'email global
Gestion de branches(14)
Lister toutes les branches locales
Lister toutes les branches (incluant remote)
Créer une nouvelle branche
Supprimer une branche
Renommer une branche
Basculer vers une branche
Créer et basculer vers une nouvelle branche
Basculer vers une branche (Git 2.23+)
Créer et basculer vers une nouvelle branche (Git 2.23+)
Fusionner la branche spécifiée dans la branche actuelle
Fusionner avec un commit de fusion
Rebaser la branche actuelle sur la branche spécifiée
Continuer le rebase après résolution des conflits
Appliquer un commit spécifique à la branche actuelle
Opérations remote(10)
Afficher les détails du dépôt distant
Ajouter un dépôt distant
Récupérer le dernier contenu depuis le remote
Récupérer les mises à jour depuis tous les remotes
Récupérer et fusionner la branche distante
Récupérer et rebaser
Push vers le dépôt distant
Push forcé (utiliser avec caution)
Push et définir la branche upstream
Supprimer la branche distante
Annuler changements(8)
Unstage un fichier
Annuler le dernier commit, garder les changements
Annuler commit et staging, garder le dossier de travail
Annuler commit et jeter tous les changements
Annuler un commit (crée un nouveau commit)
Restaurer fichier du dossier de travail (Git 2.23+)
Unstage fichier (Git 2.23+)
Supprimer fichiers et dossiers non suivis
Gestion de tags(6)
Lister tous les tags
Créer un tag léger
Créer un tag annoté
Supprimer un tag local
Push tag vers remote
Push tous les tags vers remote
Voir l'historique(7)
Afficher l'historique des commits
Afficher un historique compact
Afficher l'historique de toutes les branches en graph
Afficher les détails d'un commit
Afficher l'historique de modification pour chaque ligne
Afficher toute l'historique des opérations
Commencer une recherche binaire pour le commit problématique
Stash(7)
Stasher les changements actuels
Stasher les changements avec message
Lister tous les stashes
Appliquer et supprimer le dernier stash
Appliquer stash sans supprimer
Supprimer le dernier stash
Supprimer tous les stashes
Qu'est-ce que Git ?
Un aide-mémoire Git est une référence rapide des commandes de gestion de versions, organisée selon la tâche à effectuer. Git est un système distribué : chaque clone contient l’historique du projet, les branches sont des pointeurs légers et les commits enregistrent l’évolution du code dans le temps. L’aide-mémoire est utile lorsque le flux de travail est clair mais que la syntaxe exacte manque, par exemple afficher les changements indexés, créer une branche, annuler un commit, mettre du travail en stash, taguer une version ou synchroniser un dépôt distant. C’est une référence, pas un remplacement de la compréhension de l’état du dépôt. Les commandes destructrices comme reset --hard, clean -fd, rebase ou push forcé doivent être copiées seulement après vérification du travail non commité, de la branche active et de l’impact distant.
Guide d'utilisation
Référence rapide
- Cliquez sur une carte de commande pour la copier
- Utilisez le champ de recherche pour retrouver rapidement une commande précise
- Cliquez sur les étiquettes de catégorie pour filtrer par type
- Survolez les commandes pour afficher des descriptions détaillées
Fonctionnalités
Conseils avancés
- Utilisez git restore --staged pour retirer des fichiers de l'index
- Utilisez git commit --amend pour modifier le dernier commit
- Utilisez git stash pour mettre temporairement le travail de côté
- Utilisez git revert pour annuler des commits déjà poussés
Cas d’utilisation
Principe technique
Les modifications locales transitent par trois zones : le répertoire de travail, l'index (aussi appelé zone de staging, stocké dans .git/index) et la base de données d'objets. git add enregistre les hash de blob dans l'index, git commit fige l'index dans un nouveau tree et objet commit, et git checkout/switch met à jour l'index et l'arborescence de travail vers un commit cible. Les fusions se classent en deux catégories : le fast-forward avance simplement le pointeur de branche lorsque la cible est un descendant direct, tandis que les fusions à trois voies (stratégie recursive ou ort) calculent un ancêtre commun et construisent un commit de fusion avec deux parents. git rebase réécrit l'historique en rejouant les commits un par un sur une nouvelle base, produisant de nouveaux SHA.
La synchronisation distante s'effectue via le protocole intelligent HTTPS, SSH ou le protocole obsolète git://, échangeant des fichiers pack générés par compression delta. Après un fetch, Git stocke l'instantané sous refs/remotes/origin/* et le reflog sous .git/logs/ conserve une trace d'annulation de 90 jours par défaut (gc.reflogExpire) de sorte que même un reset --hard ou un rebase raté peut être récupéré avant que le garbage collection ne purge les objets inaccessibles.
- Modèle d'objets : blob, tree, commit, tag — adressés par contenu via SHA-1 (ou SHA-256 depuis 2.29), stockés en vrac sous .git/objects/xx/ ou empaquetés dans .git/objects/pack/*.pack
- Index/staging : .git/index est un fichier binaire associant chemin → hash blob + informations stat ; git le met à jour, git commit le fige dans un tree
- Références et HEAD : refs/heads/<branche>, refs/remotes/<distant>/<branche>, refs/tags/<tag> sont des fichiers texte contenant un SHA ; HEAD est une référence symbolique vers la branche courante
- Stratégies de fusion : fast-forward lorsque la cible est une descendante, sinon fusion à trois voies recursive/ort utilisant la base de fusion ; --no-ff force un commit de fusion
- Réécritures par rebase : git rebase rejoue les commits sur une nouvelle base produisant de nouveaux SHA, brisant l'historique partagé s'il est poussé — d'où la préférence pour --force-with-lease plutôt que --force
- Récupération via reflog : .git/logs/HEAD et les journaux par référence conservent les mouvements de refs pendant 90 jours (gc.reflogExpire) ; git reflog suivi de git reset restaure après des opérations destructrices
- Transport : HTTPS intelligent, SSH ou git:// négocient les fichiers pack via le protocole upload-pack/receive-pack ; les clones superficiels utilisent --depth pour limiter l'historique
Exemples
Créer et basculer vers une nouvelle branche
git checkout -b feature/login # Créer et basculer vers une nouvelle brancheAnnuler les modifications du répertoire de travail
git restore filename # Restaurer le fichier au dernier état validéVoir l'historique des commits
git log --oneline --graph --all # Afficher graphiquement l'historique de toutes les branchesFAQ
Comment annuler mon commit le plus récent ?
git reset --soft HEAD~1 garde vos modifications indexées pour pouvoir recommit ; git reset --mixed HEAD~1 les garde dans l'arbre de travail mais désindexées ; git reset --hard HEAD~1 les supprime. Si le commit est déjà poussé, utilisez git revert HEAD à la place, qui crée un nouveau commit annulant le changement sans réécrire l'historique.
Quelle est la différence entre git pull et git fetch ?
git fetch télécharge uniquement les commits depuis le distant dans vos refs locales — il ne touche jamais à votre branche de travail. git pull équivaut à git fetch suivi de git merge (ou git rebase si --rebase est activé). Utilisez fetch quand vous voulez inspecter les changements amont avant de les intégrer.
Comment annuler les modifications locales d'un fichier ?
git restore <file> annule les modifications non commitées dans l'arbre de travail ; git restore --staged <file> désindexe un fichier sans perdre son contenu ; git checkout HEAD -- <file> restaure la version du dernier commit. Pour les fichiers non suivis, utilisez git clean -f, ou -fd pour aussi supprimer les répertoires.
Quand utiliser rebase plutôt que merge ?
Rebase quand vous voulez un historique linéaire sur une branche de fonctionnalité privée avant de la fusionner. Merge lors de l'intégration d'une branche partagée où préserver l'historique de développement réel compte. Ne rebase jamais des commits qui ont été poussés sur une branche partagée sauf accord de tous — cela réécrit les SHA et casse les clones des autres.
Comment voir ce qui est sur le point d'être poussé ?
git log @{u}.. affiche les commits de votre branche qui ne sont pas sur l'amont. git diff @{u} affiche le diff combiné. git status comparé à origin (après un fetch) affiche les compteurs en avance/en retard.
Comment récupérer une branche supprimée ou un commit perdu ?
git reflog liste chaque position où HEAD a été ; trouvez le SHA du commit perdu et lancez git checkout <sha> ou git branch <name> <sha>. Les entrées du reflog durent environ 90 jours par défaut avant le ramasse-miettes, alors faites-le rapidement après l'erreur.
Quelle est la façon la plus sûre d'amender un commit ?
git commit --amend vous permet de modifier le message du commit le plus récent ou d'ajouter des fichiers oubliés. Il réécrit le SHA, donc ne le faites que sur des commits locaux non encore poussés. Si vous devez amender un commit poussé, poussez avec --force-with-lease (pas --force) pour éviter d'écraser les mises à jour de vos coéquipiers.