Existe-t-il une possibilité de restaurer un fichier validé dans Git? J'ai poussé un commit sur GitHub, puis j'ai réalisé qu'il y avait un fichier que je ne voulais pas pousser (je n'ai pas terminé les modifications).
Existe-t-il une possibilité de restaurer un fichier validé dans Git? J'ai poussé un commit sur GitHub, puis j'ai réalisé qu'il y avait un fichier que je ne voulais pas pousser (je n'ai pas terminé les modifications).
Réponses:
mise à jour: méthode plus sûre ajoutée
vérifier 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écessaire:
git push
revenez à votre travail inachevé, recommencez (flèche vers le haut 3 fois):
git checkout HEAD^ -- /path/to/file
Pour modifier le dernier commit du référentiel HEAD, obscurcir votre travail poussé accidentellement, tout en pouvant potentiellement entrer en conflit avec votre collègue qui l'a peut-être déjà tiré, et qui poussera les cheveux gris et perdra beaucoup de temps à essayer de réconcilier son chef de branche locale avec le central:
Pour supprimer le changement de fichier du dernier commit:
pour rétablir le fichier à l'état avant le dernier commit, faites:
git checkout HEAD^ /path/to/file
pour mettre à jour le dernier commit avec le fichier rétabli, faites:
git commit --amend
pour pousser le commit mis à jour vers le référentiel, faites:
git push -f
Vraiment, pensez à utiliser la méthode préférée mentionnée précédemment.
git checkout HEAD~2 /path/to/file
? Edit: On dirait que ce que je voulais dans mon cas était simplementgit rm /path/to/file
Si vous souhaitez supprimer le fichier du référentiel distant, supprimez-le d'abord de votre projet avec l'option --cache, puis poussez-le:
git rm --cache /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 validations) N'oubliez pas d'ajouter à .gitignore les extensions de fichier que vous ne voulez pas pousser.
Vous ne pouvez rétablir qu'un seul fichier à une révision spécifiée.
Vous pouvez d'abord vérifier sur quels commits le fichier a été modifié.
git log path/to/file.txt
Ensuite, vous pouvez extraire 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.
Réinitialisez le fichier dans un état correct, validez et appuyez à nouveau.
Si vous êtes sûr que personne d'autre n'a encore récupéré vos modifications, vous pouvez utiliser --amend
lors de la validation, pour modifier votre précédent commit (c'est-à-dire réécrire l'historique), puis pousser. Je pense que vous devrez utiliser l' -f
option lors de la poussée, pour forcer la poussée, cependant.
Obtenez le code de hachage du dernier commit.
git log
git revert <hash_code_from_git_log>
git push
vérifier dans le GHR. vous pourriez obtenir ce dont vous avez besoin, j'espère que cela vous sera utile