Détails
Comment annuler les plus récents commits locaux dans Git ?
J'ai accidentellement commis les mauvais fichiers sur [Git][1], mais je n'ai pas encore poussé le commit sur le serveur.
Comment puis-je annuler ces livraisons à partir du référentiel local ?
20249
3
Annuler un commit et le refaire
git status
, donc vous devrez les ajouter à nouveau avant de commiter). Si vous voulez seulement ajouter des changements au commit précédent, ou changer le message de commit1, vous pouvez utilisergit reset --soft HEAD~
à la place, ce qui est commegit reset HEAD~
2 mais laisse vos changements existants indexés.git add
tout ce que vous voulez inclure dans votre nouveau commit.reset
a copié l'ancien head dans.git/ORIG_HEAD
;commit
avec-c ORIG_HEAD
ouvrira un éditeur, qui contient initialement le message de log de l'ancien commit et vous permet de le modifier. Si vous n'avez pas besoin de modifier le message, vous pouvez utiliser l'option-C
.Attention cependant, si vous avez ajouté de nouveaux changements à l'index, utiliser
commit --amend
les ajoutera à votre précédent commit.[2] : https://git-scm.com/docs/git-reset
Si le code est déjà poussé sur votre serveur et que vous avez les permissions d'écraser l'historique (rebase) alors :
Vous pouvez également consulter cette réponse :
https://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head/34519716#34519716
La réponse ci-dessus vous montrera
git reflog
qui est utilisé pour trouver quel est le SHA-1 auquel vous souhaitez revenir. Une fois que vous avez trouvé le point sur lequel vous souhaitez annuler, utilisez la séquence de commandes expliquée ci-dessus.1 Notez cependant que vous n'avez pas besoin de revenir à un commit antérieur si vous avez juste fait une erreur dans votre message de commit. L'option la plus simple est de
git reset
(pour annuler tous les changements que vous avez faits depuis) et ensuitegit commit --amend
, ce qui ouvrira votre éditeur de messages de commit par défaut pré-rempli avec le dernier message de commit.2
HEAD~
est le même queHEAD~1
Ajoutez/supprimez des fichiers pour obtenir les choses comme vous le souhaitez :
Puis modifiez le commit :
Le commit précédent, erroné, sera modifié pour refléter le nouvel état de l'index - en d'autres termes, ce sera comme si vous n'aviez jamais fait d'erreur en premier lieu.
Notez que vous ne devriez faire ceci que si vous n'avez pas encore poussé. Si vous avez poussé, il vous suffit de commiter une correction normalement.
ou
Avertissement : La commande ci-dessus supprimera définitivement les modifications des fichiers
.java
(et tout autre fichier) que vous vouliez commettre.Le
hard reset
àHEAD-1
remettra votre copie de travail à l'état de la livraison avant votre mauvaise livraison.