web-dev-qa-db-fra.com

Git: Supprimer le fichier validé après le push

Est-il possible de restaurer un fichier validé dans Git? J'ai poussé un commit vers GitHub puis je me suis rendu compte qu'il y avait un fichier que je ne voulais pas être poussé (je n'ai pas fini les modifications).

62
kmaci

mise à jour: ajout de la méthode plus sûre

méthode préférée:

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

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

    git commit -am "revert changes on this file, not finished with it yet"
    
  3. Poussez, pas besoin de force:

    git Push
    
  4. retourne à ton travail inachevé, fais encore (3 fois la flèche vers le haut):

    git checkout HEAD^ -- /path/to/file
    

efficacement 'sans engagement':

Pour modifier le dernier commit du référentiel HEAD, masquer votre travail forcé par inadvertance, tout en risquant de créer un conflit avec votre collègue qui l’a peut-être déjà fait et qui va avoir des cheveux gris et perdre beaucoup de temps à essayer de réconcilier son chef de succursale avec le central:

Pour supprimer le changement de fichier de la dernière validation:

  1. pour rétablir l'état du fichier avant le dernier commit, faites:

    git checkout HEAD^ /path/to/file
    
  2. pour mettre à jour le dernier commit avec le fichier annulé, faites:

    git commit --amend
    
  3. pour pousser le commit mis à jour dans le référentiel, faites:

    git Push -f
    

Vraiment, envisagez d'utiliser la méthode préférée mentionnée précédemment.

92
xor

Si vous souhaitez supprimer le fichier du référentiel distant, supprimez-le d'abord de votre projet avec l'option --cache, puis appuyez dessus:

git rm --cache /path/to/file
git commit -am "Remove file"
git Push

(Cela fonctionne même si le fichier a été ajouté au référentiel distant il y a quelques validations.) N'oubliez pas d'ajouter à .gitignore les extensions de fichier que vous ne souhaitez pas envoyer.

19
micoru

Vous pouvez rétablir un seul fichier dans une révision spécifiée.

Tout d'abord, vous pouvez vérifier sur quel fichier 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 commettre et pousser à nouveau.

19
René Höhle

Réinitialisez le fichier dans un état correct, validez et appuyez à nouveau sur.

Si vous êtes certain que personne d'autre n'a encore récupéré vos modifications, vous pouvez utiliser --amend lors de la validation, pour modifier votre commit précédent (c’est-à-dire réécrire l’historique), puis Push. Je pense que vous devrez utiliser le -f lors de la poussée, pour forcer la poussée, cependant.

6
JB Nizet
  1. Récupère le code de hachage du dernier commit.

    • git log
  2. Annuler le commit
    • git revert <hash_code_from_git_log>
  3. Appuyez sur les modifications
    • git Push

découvrez dans le GHR. vous pourriez obtenir tout ce dont vous avez besoin, j'espère que cela vous sera utile

1
krish babu