git - récupère les fichiers supprimés d'un commit précédent


2

J'ai accidentellement supprimé certains fichiers d'un commit précédent et j'aimerais les récupérer. Comment puis-je faire ceci?

J'ai couru cela et trouvé exactement ce que je cherchais:

git whatchanged --diff-filter=D

Au moment où j'ai fait la validation, j'aurais dû ne valider que les fichiers nouveaux / modifiés et exécuter un reset --hardensuite pour récupérer les fichiers manquants. J'ai environ 100 fichiers à restaurer.

Je ne veux pas faire un retour en arrière car cela annulerait également les modifications de ce commit.

Des idées?


Quel système d'exploitation utilisez-vous?
Wullxz

regarde par ici . Ils ont déjà trouvé une réponse à la même question.
wullxz

Parfait, j'ai trouvé quelque chose qui fonctionnera pour moi. J'ai écrit un joli petit script pour constituer une liste de fichiers, puis les extraire.
Walter

Réponses:



0
Checkout my gist solution: 
https://gist.github.com/KalemaEdgar/a88a09b8bfbf4f63dafce67b7721600c

Afficher un résumé de l'emplacement de tous les fichiers supprimés.

$ git log --diff-filter=D --summary
commit fd87304411b93bbf7414f39251ba5e4134b27755 (HEAD)
Author: Kalema Edgar <testemail@gmail.com>
Date:   Wed May 1 14:02:36 2019 +0300

    Revert "Version 1.0.0 for app"

    This reverts commit 81585e50d2523c76f9ce7a4375e9b548895773f0.

 delete mode 100644 bootstrap.php
 delete mode 100644 composer.json
 delete mode 100644 composer.lock

Trouvez le dernier commit qui a affecté le chemin. Le chemin à partir duquel les fichiers ont été supprimés

$ git rev-list -n 1 HEAD -- <file_path>
username@servername /htdocs/app ((fd87304...))
$ git rev-list -n 1 HEAD -- . (I am using a dot cause I am in the same directory)
fd87304411b93bbf7414f39251ba5e4134b27755

Le commit qui a causé la suppression était fd87304411b93bbf7414f39251ba5e4134b27755.

Vérifiez la version de ce commit pour renvoyer les fichiers.

username@servername /htdocs/app ((fd87304...))
$ git checkout fd87304411b93bbf7414f39251ba5e4134b27755^ -- <filepath_to_recover>

$ git checkout fd87304411b93bbf7414f39251ba5e4134b27755^ -- .
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.