Disons que je suis dans un dépôt Git. Je supprime un fichier et je valide cette modification. Je continue à travailler et effectue d'autres livraisons. Puis, je découvre que j'ai besoin de restaurer ce fichier.
Je sais que je peux extraire un fichier en utilisant git checkout HEAD^ foo.bar
mais je ne sais pas vraiment quand ce fichier a été supprimé.
- Quel serait le moyen le plus rapide de trouver le commit qui a supprimé un nom de fichier donné ?
- Quel serait le moyen le plus simple de récupérer ce fichier dans ma copie de travail ?
J'espère ne pas avoir à parcourir manuellement mes journaux, à extraire l'ensemble du projet pour une ZSD donnée, puis à copier manuellement ce fichier dans l'extraction de mon projet original.
41 votes
Notez que le commentaire précédent répond à la question dans le titre, et non dans le corps du texte -- cela inclut le fait de découvrir quand le fichier a été supprimé.
12 votes
Pour trouver l'engagement dans lequel un fichier a été supprimé :
git log --diff-filter=D -- path/to/file
2 votes
En rapport : Comment supprimer les changements non indexés dans git ? .
0 votes
En rapport : Comment localiser un fichier supprimé dans l'historique des livraisons ?
0 votes
En rapport : comment restaurer tous les fichiers supprimés en une seule fois
0 votes
@hhh ne fonctionne pas, j'obtiens une erreur : pathspec './src/main/resources/file' ne correspond à aucun fichier connu de git.
59 votes
@hhhh
git checkout deletedFile
va annuler la suppressiondeletedFile
s'il a été supprimé mais que cette suppression n'a pas encore été mis en scène ou engagé . Ce n'est pas ce que demande la question ici ; cette question porte sur la façon de restaurer un fichier dont la suppression a été commise il y a de nombreux commits.