ToolActToolAct

Référence des Commandes Git

Manuel de référence complet des commandes Git, organisé par catégorie pour recherche rapide

Tous: 65 个命令

Commandes basiques(13)

git init

Créer un nouveau dépôt Git dans le dossier courant

git clone <url>

Cloner un dépôt distant localement

git clone --depth=1 <url>

Clone superficiel, récupérer uniquement le dernier commit

git add <file>

Ajouter fichier à la zone de staging

git add .

Ajouter tous les changements à la zone de staging

git commit -m "message"

Commiter les changements staged

git commit --amend

Modifier le dernier commit

git status

Afficher le statut actuel du dépôt

git diff

Afficher les changements unstaged

git diff --staged

Afficher les changements staged

git config --list

Afficher toute la configuration

git config --global user.name "name"

Définir le nom d'utilisateur global

git config --global user.email "email"

Définir l'email global

Gestion de branches(14)

git branch

Lister toutes les branches locales

git branch -a

Lister toutes les branches (incluant remote)

git branch <name>

Créer une nouvelle branche

git branch -d <name>

Supprimer une branche

git branch -m <old> <new>

Renommer une branche

git checkout <branch>

Basculer vers une branche

git checkout -b <branch>

Créer et basculer vers une nouvelle branche

git switch <branch>

Basculer vers une branche (Git 2.23+)

git switch -c <branch>

Créer et basculer vers une nouvelle branche (Git 2.23+)

git merge <branch>

Fusionner la branche spécifiée dans la branche actuelle

git merge --no-ff <branch>

Fusionner avec un commit de fusion

git rebase <branch>

Rebaser la branche actuelle sur la branche spécifiée

git rebase --continue

Continuer le rebase après résolution des conflits

git cherry-pick <commit>

Appliquer un commit spécifique à la branche actuelle

Opérations remote(10)

git remote -v

Afficher les détails du dépôt distant

git remote add <name> <url>

Ajouter un dépôt distant

git fetch <remote>

Récupérer le dernier contenu depuis le remote

git fetch --all

Récupérer les mises à jour depuis tous les remotes

git pull <remote> <branch>

Récupérer et fusionner la branche distante

git pull --rebase

Récupérer et rebaser

git push <remote> <branch>

Push vers le dépôt distant

git push -f

Push forcé (utiliser avec caution)

git push -u origin <branch>

Push et définir la branche upstream

git push origin --delete <branch>

Supprimer la branche distante

Annuler changements(8)

git reset <file>

Unstage un fichier

git reset --soft HEAD~1

Annuler le dernier commit, garder les changements

git reset --mixed HEAD~1

Annuler commit et staging, garder le dossier de travail

git reset --hard HEAD~1

Annuler commit et jeter tous les changements

git revert <commit>

Annuler un commit (crée un nouveau commit)

git restore <file>

Restaurer fichier du dossier de travail (Git 2.23+)

git restore --staged <file>

Unstage fichier (Git 2.23+)

git clean -fd

Supprimer fichiers et dossiers non suivis

Gestion de tags(6)

git tag

Lister tous les tags

git tag <name>

Créer un tag léger

git tag -a <name> -m "msg"

Créer un tag annoté

git tag -d <name>

Supprimer un tag local

git push origin <tag>

Push tag vers remote

git push --tags

Push tous les tags vers remote

Voir l'historique(7)

git log

Afficher l'historique des commits

git log --oneline

Afficher un historique compact

git log --oneline --graph --all

Afficher l'historique de toutes les branches en graph

git show <commit>

Afficher les détails d'un commit

git blame <file>

Afficher l'historique de modification pour chaque ligne

git reflog

Afficher toute l'historique des opérations

git bisect start

Commencer une recherche binaire pour le commit problématique

Stash(7)

git stash

Stasher les changements actuels

git stash save "message"

Stasher les changements avec message

git stash list

Lister tous les stashes

git stash pop

Appliquer et supprimer le dernier stash

git stash apply

Appliquer stash sans supprimer

git stash drop

Supprimer le dernier stash

git stash clear

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

  1. Cliquez sur une carte de commande pour la copier
  2. Utilisez le champ de recherche pour retrouver rapidement une commande précise
  3. Cliquez sur les étiquettes de catégorie pour filtrer par type
  4. Survolez les commandes pour afficher des descriptions détaillées

Fonctionnalités

Organisé par scénarioCommandes regroupées par basique, branche, distant, annulation, étiquettes, historique et stash, pour retrouver l'essentiel sans parcourir toute la liste.
Recherche et filtreCombinez le champ de recherche et les boutons de catégorie pour affiner rapidement les résultats, idéal lorsqu'on ne se souvient que d'une partie de la commande ou de sa description.
Cliquer pour copierCliquez sur une carte de commande pour copier, puis remplacez les noms de branches, chemins de fichiers ou hachages de commit selon vos besoins.
Avertissement de risqueLes commandes d'annulation, de réinitialisation et de push forcé exigent de confirmer l'étendue de l'impact, pour éviter de supprimer par erreur des modifications locales ou de réécrire l'historique partagé.

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

Trouver la catégorie de commande dont vous avez besoin en cours de tâcheRecherchez ou filtrez les commandes Git par travail de base, branches, distants, annulation, étiquettes, historique et stash pour que la syntaxe correcte soit visible sans parcourir un long article ni rouvrir un onglet de tutoriel. Chaque carte affiche déjà la description courte à côté de la commande, ce qui est utile lorsque le flux de travail est clair mais que les options exactes manquent, comme savoir si --force-with-lease est préférable à --force, ou connaître la différence entre git restore et git reset.
Copier les commandes avec les espaces réservés intactsUtilisez la copie en un clic pour des commandes telles que git checkout -b <branche>, git push -u origin <branche>, git log --oneline --graph --all ou git restore --staged <fichier>, puis remplacez les espaces réservés dans votre terminal. La référence vivant dans le navigateur et aucune donnée de commit ni nom de branche n’étant envoyés, il est sûr de copier à côté de vrais hash, de préfixes de branches internes ou de noms de fonctionnalités en cours non encore poussés.
Examiner les commandes risquées avant de les utiliserLa section annulation regroupe les flux de travail liés à reset, clean, restore et push forcé pour que l’intention destructive soit visible d’un coup. Avant d’exécuter git reset --hard HEAD~3 ou git push --force, vérifiez la branche active avec git status et l’état du suivi distant avec git rev-parse --abbrev-ref --symbolic-full-name @{u}, car la réécriture de l’historique partagé ne peut toujours pas être annulée par les coéquipiers.
Enregistrer les extraits de branches, étiquettes et stash comme modèlesDes commandes comme ‘git switch -c feature/x’, ‘git tag -a v1.2 -m’ et ‘git stash push -m’ se répètent d’un projet à l’autre selon les conventions de branches ou de versions de l’équipe. Copiez-les une fois dans la documentation d’accueil, le carnet de procédures ou la configuration de hook pre-commit de l’équipe, et revenez-y chaque fois que le comportement de Git change — par exemple lorsqu’un projet exige --force-with-lease au lieu de --force sur les branches protégées.
Utiliser les commandes d’historique pour lire le dépôt, pas le réécrireExécutez ‘git log --oneline --graph --all’, ‘git blame -L’ et ‘git diff <branche>...’ pour comprendre qui a modifié quoi avant de lancer un rebase ou un revert. Lire d’abord coûte moins cher que récupérer une réécriture d’historique ratée, en particulier dans les monodépôts où un rebase malencontreux entre branches de fonctionnalités peut invalider des dizaines de pull requests en cours.

Principe technique

Git stocke chaque état du projet sous forme d'un graphe d'objets adressés par contenu dans .git/objects, où l'adresse est un hash SHA-1 de 40 caractères (SHA-256 est disponible en option depuis le format d'objet expérimental de Git 2.29). Il existe quatre types d'objets : blob contient les octets bruts d'un fichier, tree mappe les noms vers les blobs et sous-arbres, commit pointe vers un tree plus les commits parents et les métadonnées de l'auteur, et tag est un pointeur signé vers l'un des éléments ci-dessus. Les branches et tags sous refs/heads/, refs/remotes/ et refs/tags/ sont simplement des fichiers texte contenant un SHA, et HEAD est une référence symbolique qui nomme la branche courante.

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 branche

Annuler 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 branches

FAQ

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.