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.
Syntaxe
| Command | What it does |
|---|---|
git reset --hard | Abandonne toutes les modifications non validées (reste sur HEAD) |
git reset --hard HEAD~1 | Supprime le dernier commit et ses modifications |
git reset --hard <hash> | Force la branche à revenir à un commit spécifique |
git reset --hard origin/main | Fait 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.
| Step | Command | Result |
|---|---|---|
| 1 | git reflog | Liste les endroits où HEAD est passé, avec les hashs |
| 2 | git reset --hard <hash> | Revient au commit précédant le reset |
FAQ git reset --hard
Que fait réellement git reset --hard ?
--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 ?
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 ?
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 ?
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 ?
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.