Git - supprimé certains fichiers localement, comment les obtenir à partir d'un référentiel distant


110

J'ai supprimé certains fichiers sur mon PC, comment puis-je les télécharger à nouveau?

Pull dit: "Déjà à jour".


1
Vous n'avez pas à les "télécharger à nouveau", car tout l'historique du référentiel existe localement lorsque vous utilisez Git.
cdhowie

savez-vous comment les obtenir du local?
Charlie Parker

Réponses:


164

Puisque git est un VCS distribué, votre référentiel local contient toutes les informations. Aucun téléchargement n'est nécessaire; il vous suffit d'extraire le contenu que vous souhaitez du référentiel à portée de main.

Si vous n'avez pas validé la suppression, vérifiez simplement les fichiers de votre commit actuel:

git checkout HEAD <path>

Si vous avez validé la suppression, vous devez extraire les fichiers d'un commit qui les contient. Ce serait probablement le commit précédent:

git checkout HEAD^ <path>

mais s'il est ncommité il y a déjà, utilisez HEAD~nou lancez simplement gitk, trouvez le SHA1 du commit approprié et collez-le.


2
juste comme un commentaire secondaire, cela fonctionne également pour un répertoire complet, ce n'est pas spécial ou spécifique à un seul fichier (cela a fonctionné quand je l'ai essayé au moins). Thnx btw.
Charlie Parker

5
NB le <path>est obligatoire, même si juste un .point pour le répertoire courant. Mais la "branche" ( HEADdans l'exemple ci-dessus) est facultative. Comme avec tant de commandes Git, ni la sortie ni l'aide ne sont utiles.
MarkHu

39

git checkout filename

git reset --hard pourrait faire l'affaire aussi


9
Attention cependant à utiliser la git reset --hardméthode car cela ramènera l'arbre entier à l'emplacement où vous avez mis HEAD / HEAD ^ / HEAD ~ n et il le fera sans préjudice et perdra potentiellement beaucoup de commits ...
g19fanatic

git checkout filename était la réponse pour moi :)
Ruub

git checkout filename crée juste un fichier vide
mrek

placé dans le dossier souhaité et a git checkount .fonctionné comme un charme!
hzitoun

21

Si vous avez supprimé plusieurs fichiers localement mais non validés, vous pouvez forcer l'extraction

$ git checkout -f HEAD

Comme nous le voyons dans la sortie «Déjà à jour», la personne qui pose cette question n'a rien commis ces derniers temps. Devriez-vous peut-être spécifier que git checkout -f HEAD est DANGEREUX? Comme cela pourrait annuler les modifications locales qui n'ont pas été validées (la restauration des fichiers précédents étant le résultat positif, la perte des modifications sur les fichiers modifiés le résultat négatif).
Lionel Trebuchon

15

Si vous avez supprimé plusieurs fichiers localement et n'avez pas validé les modifications, accédez au chemin de votre référentiel local, ouvrez le shell git et saisissez.

$ git checkout HEAD .

Tous les fichiers supprimés avant le dernier commit seront récupérés.

Ajouter "." récupérera tous les fichiers supprimés dans le référentiel actuel, dans leurs chemins respectifs.

Pour plus de détails, consultez la documentation .


2

Vous devez extraire une version précédente avant de supprimer les fichiers. Essayez git checkout HEAD^de récupérer la dernière révision.


0

En outre, j'ajoute à faire les étapes suivantes afin que le dépôt git soit correctement lié à l'EDI:

 $ git reset <commit #>

 $ git checkout <file/path>

J'espère que cela a été utile!!

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.