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

Dick Colt
la source
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.

Cascabel
la source
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

Šimon Tóth
la source
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
Amit
la source
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 .

rzskhr
la source
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.

maigre
la source
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!!

Mona Wade
la source