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).

26
demandé sur Cœur 2013-08-21 16:31:49

5 réponses

mise à jour: ajout d'une méthode plus sûre

méthode préférée:

  1. consultez l'état précédent (inchangé) de votre fichier; remarquez le double tiret

    git checkout HEAD^ -- /path/to/file
    
  2. valider:

    git commit -am "revert changes on this file, not finished with it yet"
    
  3. le pousser, pas de force nécessaire:

    git push
    
  4. 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:

  1. pour rétablir l'état d'avant le dernier commit, faire:

    git checkout HEAD^ /path/to/file
    
  2. pour mettre à jour la dernière propagation avec le fichier inversé, faites:

    git commit --amend
    
  3. 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.

56
répondu xor 2018-06-06 23:16:31

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.

12
répondu Stony 2013-08-21 12:36:59

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.

4
répondu JB Nizet 2013-08-21 12:36:09

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.

4
répondu micoru 2018-07-19 08:33:26
  1. Obtenir le code de hachage de dernier commit.

    • git log
  2. inverser la propagation
    • git revert <hash_code_from_git_log>
  3. 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

1
répondu krish babu 2018-07-09 22:42:35