Git: supprimer le fichier committed après push
y a-t-il une possibilité de retourner un fichier committed dans Git? J'ai poussé un commit vers GitHub et puis j'ai réalisé qu'il y avait un fichier que je ne voulais pas être poussé (je n'ai pas fini les changements).
5 réponses
mise à jour: ajout d'une méthode plus sûre
méthode préférée:
consultez l'état précédent (inchangé) de votre fichier; remarquez le double tiret
git checkout HEAD^ -- /path/to/file
valider:
git commit -am "revert changes on this file, not finished with it yet"
le pousser, pas de force nécessaire:
git push
retournez à votre travail inachevé, de nouveau faites (3 fois Flèche vers le haut):
git checkout HEAD^ -- /path/to/file
effectivement 'uncommitting':
pour modifier le dernier commit de la tête du dépôt, brouillant votre travail accidentellement poussé, tout en risquant d'entrer en conflit avec votre collègue qui l'a peut-être déjà tiré, et qui va avoir les cheveux gris et perdre beaucoup de temps à essayer de réconcilier sa tête de branche locale avec la centrale:
Pour supprimer le fichier de changement depuis le dernier commit:
pour rétablir l'état d'avant le dernier commit, faire:
git checkout HEAD^ /path/to/file
pour mettre à jour la dernière propagation avec le fichier inversé, faites:
git commit --amend
pour pousser la mise à jour s'engager à la mise en pension, de faire:
git push -f
vraiment, envisagez d'utiliser la méthode préférée mentionnée plus haut.
vous ne pouvez retourner qu'un 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
vous pouvez alors 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.
Réinitialiser le fichier dans un état correct, commit, et push à nouveau.
Si vous êtes sûr que personne d'autre a récupéré vos modifications, vous pouvez utiliser --amend
lors de la propagation, modifier votre propagation précédente (c'est-à-dire réécrire l'historique), puis pousser. Je pense que vous devrez utiliser le -f
option en poussant, pour forcer la poussée, cependant.
si vous voulez supprimer le fichier de la prise en charge à distance, supprimez-le d'abord de votre projet avec l'option --cache puis appuyez sur:
git rm --cache /path/to/file
git commit -am "Remove file"
git push
(cela fonctionne même si le fichier a été ajouté au rapport distant il y a quelques propagations) N'oubliez pas d'ajouter .gitignore les extensions de fichier que vous ne voulez pas pousser.
Obtenir le code de hachage de dernier commit.
git log
- inverser la propagation
git revert <hash_code_from_git_log>
- poussez les changements
git push
découvrez dans la GHR. vous pouvez obtenir ce que jamais vous avez besoin, j'espere que c'est utile