Menu
Coddy logo textTech

Git Reset --hard

Dernière mise à jour

git reset --hard déplace votre branche vers un commit cible et force à la fois la zone de staging et votre arbre de travail à y correspondre exactement - abandonnant au passage toute modification non validée. C'est la forme la plus destructrice de git reset, alors assurez-vous de ne plus avoir besoin de votre travail actuel avant de l'exécuter.

Vous avez abandonné un commit par erreur ? Un hard reset est généralement récupérable via git reflog. Essayez-les en toute sécurité dans le terminal playground - un vrai shell dans votre navigateur.

git reset --hard recule HEAD et jette tout ce qui suit - zone d'index et arbre de travail compris.

Syntaxe

CommandWhat it does
git reset --hardAbandonne toutes les modifications non validées (reste sur HEAD)
git reset --hard HEAD~1Supprime le dernier commit et ses modifications
git reset --hard <hash>Force la branche à revenir à un commit spécifique
git reset --hard origin/mainFait correspondre exactement la branche locale au dépôt distant

Récupérer un hard reset

Le travail validé que vous avez abandonné avec le reset est généralement encore récupérable.

StepCommandResult
1git reflogListe les endroits où HEAD est passé, avec les hashs
2git reset --hard <hash>Revient au commit précédant le reset

FAQ git reset --hard

Que fait réellement git reset --hard ?
Il déplace votre branche actuelle vers le commit cible et écrase à la fois la zone de staging et votre arbre de travail pour y correspondre. Toute modification non validée - indexée ou non - est abandonnée. Comparé à --soft (qui conserve les modifications indexées) et --mixed (qui les conserve non indexées), --hard est le seul mode qui jette les modifications.
Comment abandonner toutes mes modifications locales ?
Exécutez git reset --hard sans commit pour réinitialiser l'arbre de travail au dernier commit, effaçant les modifications non validées. Pour supprimer aussi les fichiers non suivis que reset ne touche pas, faites suivre de git clean -fd.
Comment réinitialiser ma branche pour qu'elle corresponde au dépôt distant ?
Exécutez git fetch puis git reset --hard origin/main (remplacez par votre branche). Cela force votre branche locale à correspondre exactement au dépôt distant, abandonnant les commits et modifications locaux qui en divergent - utile lorsque votre branche locale a mal tourné et que vous voulez simplement la version distante.
Puis-je annuler un git reset --hard ?
Le travail validé généralement oui : exécutez git reflog pour trouver le commit vers lequel votre branche pointait avant le reset, puis git reset --hard <hash> pour y revenir. Les modifications qui n'ont jamais été validées (uniquement dans votre arbre de travail) ne peuvent pas être récupérées, alors traitez --hard avec précaution.
Puis-je m'entraîner en ligne ?
Oui. Ouvrez le terminal playground pour exécuter git reset --hard dans un vrai shell dans votre navigateur - rien à installer. Le cours Git interactif et gratuit de Coddy couvre aussi la réinitialisation et l'annulation des modifications étape par étape.
Coddy programming languages illustration

Apprenez Git avec Coddy

COMMENCER