Passer au contenu
GitTree
Guides Git4 minutes de lecture

Git reset expliqué : soft, mixte et hard

git reset déplace votre branche vers un autre commit. Les trois modes diffèrent uniquement par ce qu'ils font avec vos fichiers. Voici ce que chacun conserve, lequel utiliser et comment récupérer lorsque vous réinitialisez trop loin.

Écrit par Kodmora

L'éditeur de logiciels derrière GitTree

Mis à jour
  • Annuler et récupérer
  • Historique de validation
  • Commits
Sur cette page

Les trois modes déplacent la branche actuelle vers le commit que vous nommez. `--soft` conserve chaque modification préparée, `--mixed` (valeur par défaut) les conserve dans votre dossier de travail sans préparation et `--hard` les ignore. Pour annuler votre dernière validation tout en conservant le travail, exécutez git reset --soft HEAD~1. Utilisez --hard uniquement lorsque vous êtes sûr, car il supprime définitivement les modifications non validées.

Quelle est la différence entre soft, mixte et dur ?

Ce que chaque mode de réinitialisation de git change
ModeDéménagements de branchesZone de rassemblementDossier de travailUtilisez-le pour
--softOuiConservéConservéRefaire les commits : tout reste indexé
--mixedOuiRéinitialiserConservéSupprimez la scène et re-sélectionnez ce que vous souhaitez valider
--hardOuiRéinitialiserRéinitialiserJetez le travail

Git conserve trois copies de votre travail : l'historique des validations, la zone de préparation et le dossier de travail. La réinitialisation déplace toujours le premier. Le mode décide s’il réécrit également les deux autres.

Quand dois-je utiliser git reset --soft ?

Utilisez-le pour annuler les validations tout en gardant chaque modification par étapes, prête à être validée à nouveau. C'est le moyen le plus rapide d'écraser une branche en un seul commit :

# undo the last commit, keep the changes staged
git reset --soft HEAD~1

# squash everything since main into one commit
git reset --soft main
git commit -m "feat(search): quick open"

Quand dois-je utiliser git reset --mixed ?

C'est la valeur par défaut, donc git reset signifie git reset --mixed. Utilisez-le pour annuler des validations et diviser le travail différemment, ou pour supprimer des fichiers :

# undo the last two commits, keep the changes unstaged
git reset HEAD~2

# unstage one file (the branch does not move)
git reset src/search.ts

Pour la suppression, git restore --staged src/search.ts fait le même travail et lit plus clairement.

Quand dois-je utiliser git reset --hard ?

# drop the last commit and its changes
git reset --hard HEAD~1

# match the remote exactly
git fetch origin
git reset --hard origin/main

Comment supprimer un commit d’une branche ?

Façons de supprimer un commit
SituationCommande
Dernier commit, non pousségit reset --hard HEAD~1
Validation plus ancienne, non pousséegit rebase -i <sha>~1, puis marquez-le drop
Le commit est déjà pousségit revert <sha>
Le commit est allé dans la mauvaise branchegit cherry-pick, puis réinitialisez l'ancienne branche

git revert conserve l'historique intact, c'est donc le seul choix sûr sur une branche partagée. La réinitialisation d’une branche poussée nécessite une poussée forcée et brise les clones de vos coéquipiers. Rebase interactif et cherry-pick ont leurs propres guides.

Comment annuler une réinitialisation de git ?

Reset a déplacé la branche et le reflog se souvient où elle se trouvait :

git reflog
# 3e52f10 HEAD@{0}: reset: moving to HEAD~2
# 9b3c7d1 HEAD@{1}: commit: add search box

git reset --hard 9b3c7d1

Cela ramène les commits, y compris après --hard. Les fichiers qui ont été préparés mais jamais validés peuvent parfois être trouvés avec git fsck --lost-found. Les changements qui n’ont jamais été organisés ont disparu. Annuler une réinitialisation, un rebase ou un commit couvre tous les cas.

Quelle est la différence entre réinitialiser, rétablir et restaurer ?

Trois commandes qui se ressemblent
CommandeCe que ça faitRéécrit l’histoire ?
git resetDéplace la branche vers un autre commitOui
git revertAjoute un commit qui en annule un autreNon
git restoreChange les fichiers, jamais la brancheNon

Comment réinitialiser une branche dans GitTree

  1. Choisissez le commit

    Cliquez avec le bouton droit sur le commit auquel la branche doit revenir et ouvrez Reset … to This Commit.

  2. Choisissez le mode

    Choisissez Soft : conserver toutes les modifications par étapes, Mixte : conserver les modifications dans le dossier de travail ou Difficile : ignorer toutes les modifications….

  3. Annuler si nécessaire

    GitTree enregistre d'abord votre travail sous refs/ogt/trash, afin que Annuler puisse le restaurer, même après une réinitialisation matérielle.

Les modes de réinitialisation logicielle, mixte et matérielle dans le menu d'un commit dans GitTree.
Les modes de réinitialisation logicielle, mixte et matérielle dans le menu d'un commit dans GitTree.Interface GitTree avec un référentiel de démonstration.

Voir réinitialiser une branche vers un commit pour plus de détails, et la leçon sur les modes de réinitialisation pour vous entraîner sur un référentiel sécurisé.

Questions fréquemment posées

Que signifie HEAD~1 ?

Le commit une étape avant celui en cours. HEAD~3 est à trois pas en arrière. git log --oneline affiche les hachages si vous préférez nommer directement un commit.

Est-ce que git reset supprime les commits ?

Cela éloigne la branche d'eux, de sorte qu'ils cessent d'apparaître dans git log. Ils restent dans le reflog pendant au moins 30 jours par défaut, puis Git peut les supprimer.

Comment annuler mon dernier commit tout en conservant les modifications ?

Exécutez git reset --soft HEAD~1 pour les conserver en préparation, ou git reset HEAD~1 pour les conserver sans préparation.

Est-ce que git reset --hard est sûr ?

C'est sans danger pour un travail validé, que le reflog peut rapporter. Il n'est pas sûr pour les travaux non validés, qu'il supprime. Cachez ou validez d’abord si vous n’êtes pas sûr.

Puis-je réinitialiser une branche déjà poussée ?

Uniquement avec une poussée forcée, qui réécrit la branche pour tout le monde. Sur les branches partagées, utilisez plutôt git revert.

Sources

Les allégations concernant d'autres produits ont été vérifiées par rapport à leurs pages officielles sur 7 novembre 2026. Les prix et les fonctionnalités changent ; les pages des fournisseurs sont la source de vérité.