Existe-t-il une possibilité de revenir sur un fichier commit dans Git ? J'ai poussé un commit sur GitHub et ensuite je me suis rendu compte qu'il y a un fichier que je ne voulais pas pousser (je n'ai pas fini les changements).
Réponses
Trop de publicités?mise à jour : ajout d'une méthode plus sûre
méthode préférée :
-
vérifiez l'état précédent (inchangé) de votre fichier ; remarquez le double tiret
git checkout HEAD^ -- /path/to/file
-
le commettre :
git commit -am "revert changes on this file, not finished with it yet"
-
Poussez-le, aucune force n'est nécessaire :
git push
-
revenir à votre travail inachevé, faire à nouveau (3 fois la flèche vers le haut) :
git checkout HEAD^ -- /path/to/file
en fait, de "désengagement" :
Pour modifier le dernier commit du HEAD du dépôt, obscurcissant votre travail poussé accidentellement, tout en entrant potentiellement en conflit avec votre collègue qui l'a peut-être déjà retiré, et qui aura des cheveux gris et perdra beaucoup de temps à essayer de réconcilier son head de branche locale avec le head central :
Pour supprimer le changement de fichier du dernier commit :
-
pour revenir à l'état du fichier avant le dernier commit, faites :
git checkout HEAD^ /path/to/file
-
pour mettre à jour le dernier commit avec le fichier annulé, faites :
git commit --amend
-
pour pousser le commit mis à jour vers le repo, faites :
git push -f
En réalité, envisagez d'utiliser la méthode préférentielle mentionnée précédemment.
Si vous voulez supprimer le fichier du dépôt distant, supprimez-le d'abord de votre projet avec l'option --cache, puis poussez-le :
git rm --cached /path/to/file
git commit -am "Remove file"
git push
(Cela fonctionne même si le fichier a été ajouté au dépôt distant il y a quelques commits). N'oubliez pas d'ajouter à .gitignore les extensions de fichiers que vous ne voulez pas pousser.
Vous pouvez rétablir un seul fichier à une révision spécifiée.
Tout d'abord, vous pouvez vérifier sur quels commits le fichier a été modifié.
git log path/to/file.txt
Ensuite, vous pouvez vérifier le fichier avec le numéro de révision.
git checkout 3cdc61015724f9965575ba954c8cd4232c8b42e4 /path/to/file.txt
Après cela, vous pouvez vous engager et le pousser à nouveau.
Remettre le fichier dans un état correct, commiter, et pousser à nouveau.
Si vous êtes sûr que personne d'autre n'a encore récupéré vos modifications, vous pouvez utiliser --amend
lors du commit, pour modifier votre précédent commit (i.e. réécrire l'historique), et ensuite pousser. Je pense que vous devrez utiliser la fonction -f
option lors de la poussée, pour forcer la poussée, cependant.
- Réponses précédentes
- Plus de réponses