J'ai supprimé certains fichiers.
Je ne me suis PAS encore engagé.
Je veux réinitialiser mon espace de travail pour récupérer les fichiers.
J'ai fait un git checkout .
.
Mais les fichiers supprimés sont toujours manquants.
Et git status
montre:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: cc.properties
# deleted: store/README
# deleted: store/cc.properties
#
Pourquoi ne git checkout .
réinitialise- t-il pas l'espace de travail HEAD
?
git checkout .
aurait bien fonctionné.Réponses:
La sortie vous indique ce que vous devez faire.
git reset HEAD cc.properties
etc.Cela interrompra l'opération rm. Après cela, relancer un
git status
vous dira que vous devez faire ungit checkout -- cc.properties
pour récupérer le fichier.Mise à jour: je l'ai dans mon fichier de configuration
que j'utilise habituellement pour mettre en scène des trucs.
la source
git reset HEAD \*
puisgit checkout -- .
rm -r ./engines
- Oops. Maintenantgit reset engines; git checkout engines
.Vous avez organisé la suppression, vous devez donc:
git checkout .
extrait uniquement de l'index où la suppression a déjà été effectuée.la source
Fais juste
git checkout path/to/file-I-want-to-bring-back.txt
la source
error: pathspec 'file.ext' did not match any file(s) known to git.
git status
dit-on?git checkout HEAD -- file.ext
aidé à le restaurer.Pour récupérer toutes les suppressions non mises en scène à la fois, automatiquement, sans spécifier chaque chemin unique:
Pour récupérer tous mis en scène des suppressions à la fois, automatiquement, sans spécifier chaque chemin unique:
la source
git status --long | grep 'deleted:' | awk '{print $2}' | xargs git reset HEAD --
.git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
cela fonctionnera.Puisque vous faites un
git checkout .
, il semble que vous essayez de restaurer votre branche au dernier état de validation.Vous pouvez y parvenir avec un
git reset HEAD --hard
Attention
Cela peut supprimer toutes vos dernières modifications et annuler vos modifications, par exemple, vous pouvez perdre du travail. C'est peut- être ce que vous voulez, mais consultez les documents pour vous en assurer.
la source
si vous avez utilisé
supprimer un fichier puis
ne fonctionne pas, donc dans ce cas
devrait marcher
la source
git checkout HEAD^ path/to/filename
travaillé pour moi car je n'avais pas validé le dossier.Voici la commande qui m'a aidé sur mon mac. J'ai essayé quelques autres solutions mais elles n'ont pas fonctionné pour moi.
Version Git sur OSX Mavericks
Commander
la source
la source
Utilisez
git ls-files
pour extraire les fichiers supprimés (-d) ou modifiés (-m).voir Comment puis-je restaurer uniquement les fichiers modifiés lors d'une extraction git?
la source
git ls-files -d | xargs -I{} git checkout "{}"
.Si vous souhaitez restaurer tous les fichiers en même temps
N'oubliez pas d'utiliser le point car il indique à git de récupérer tous les fichiers.
Cette commande réinitialisera la tête et annulera toutes les modifications:
Exécutez ensuite ceci pour restaurer tous les fichiers:
Ensuite, en faisant un statut git, vous obtiendrez:
la source
Voulez-vous voir ça
cela vaut pour les cas où vous avez utilisé
avant de commettre quelque chose.
Vous pouvez également vouloir vous débarrasser des fichiers créés qui n'ont pas encore été créés. Et vous n'en voulez pas. Avec :
la source
git checkout -- .
ne contribue pas à récupérer des fichiers supprimés et est équivalent à ce que le demandeur a essayé:git checkout .
. La partie qui peut travailler est celui que vous n'avez pas copié:git checkout <file_path>
.J'ai trouvé ce message en recherchant des réponses sur la façon de supprimer un fichier qui a été supprimé dans mon répertoire de travail après une fusion d'une autre branche. Aucun commit n'a encore été effectué après la fusion. Puisqu'il s'agissait d'une fusion en cours, je ne pouvais pas simplement l'ajouter en utilisant:
J'ai dû faire une autre étape en plus de la réinitialisation pour ramener le fichier:
la source
Si vous n'avez effectué aucune modification, tout ce que vous avez à faire est de les cacher et vous reviendrez à la dernière validation en cours.
la source
si vous recherchez un répertoire supprimé.
la source
Voici différents cas comme référence pour aider les autres:
Si la suppression n'a pas été validée , la commande ci-dessous restaurera le fichier supprimé dans l'arborescence de travail.
Vous pouvez obtenir une liste de tous les fichiers supprimés dans l'arborescence de travail à l'aide de la commande ci-dessous.
Si la suppression a été validée , recherchez la validation à l'endroit où elle s'est produite, puis récupérez le fichier à partir de cette validation.
Cela devrait vous donner quelque chose comme
c46e81aa403ecb8a0f7a323a358068345
, maintenant utilisez commit # iciQuelque chose comme ça: $ git checkout c46e81aa403ecb8a0f7a323a358068345 -
Dans le cas où vous recherchez le chemin du fichier à récupérer, la commande suivante affichera un résumé de tous les fichiers supprimés.
Si vous souhaitez simplement afficher la liste des fichiers:
la source
Pour moi, ce qui a fonctionné
git checkout {SHA1 of commit with version to restore} "{path to file to restore}"
Par exemple
git checkout 5a6b3179e58edff9c90326b9a04284b02fd67bd0 "src-ui/views/includes/radar.pug"
(exécuté dans la branche dans laquelle nous voulons que le fichier aille)
Après l'exécution de cette commande, le fichier restauré existera à l'emplacement d'origine (qui devra être comité)
la source
git checkout master path/to/the/file.bin
pour que vous restituiez simplement ce fichier sans perdre tout autre changement que vous auriez pu faire. PS: cela devrait être la réponse acceptée ...Si vous avez installé ToroiseGIT, sélectionnez simplement l'élément de menu "Revert ..." pour le menu contextuel du dossier parent.
la source
1.Trouvez le commit auquel vous souhaitez revenir en utilisant:
2.Retournez à ce commit en utilisant:
Maintenant, votre branche locale aurait tous les fichiers en particulier
la source
ATTENTION: engagez tout travail que vous souhaitez conserver en premier.
Vous pouvez réinitialiser votre espace de travail (et récupérer les fichiers supprimés)
la source
./*
../*
il sera développé par bash pour correspondre à ces fichiers avant d'être envoyé à git.J'ai eu le même problème mais aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai fini par faire:
- créer un fichier vide du même nom
- comparer ce fichier avec son historique local
- copier l'historique dans un fichier vide.
la source
J'ai eu le même problème et aucune des réponses que j'ai essayées ici n'a fonctionné pour moi non plus. J'utilise Intellij et j'avais vérifié une nouvelle branche
git checkout -b minimalExample
pour créer un "exemple minimal" sur la nouvelle branche d'un problème en supprimant un tas de fichiers et en modifiant un tas d'autres dans le projet. Malheureusement, même si je n'ai validé aucune des modifications sur la nouvelle branche "exemple minimal", lorsque j'ai extrait ma branche "d'origine" à nouveau, toutes les modifications et suppressions de la branche "exemple minimal" se sont produites dans la " branche "originale" (ou du moins c'est apparu). Selongit status
les fichiers supprimés, les deux branches venaient de disparaître.Heureusement, même si Intellij m'avait prévenu "la suppression de ces fichiers peut ne pas être entièrement récupérable", j'ai pu les restaurer (sur la branche d'exemple minimale à partir de laquelle ils avaient été supprimés) en cliquant avec le bouton droit sur le projet et en sélectionnant l'historique local > Afficher l'historique (puis restaurer sur l'élément d'historique le plus récent que je voulais). Après qu'Intellij a restauré les fichiers dans la branche "exemple minimal", j'ai poussé la branche à l'origine. Ensuite, je suis revenu à ma branche locale "d'origine" et j'ai couru
git pull origin minimalExample
pour les récupérer également dans la branche "d'origine".la source