git récupérer fichier supprimé où aucun commit a été faite après le supprimer
J'ai supprimé certains fichiers.
Je n'ai PAS commettre encore.
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 portées disparues.
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 pas git checkout .
réinitialiser l'espace de travail à HEAD
?
- si vous n'aviez pas mis en scène vos modifications après la suppression,
git checkout .
aurait fonctionné. - et vous perdrez vos modifications si vous le faites.
- Appuyez simplement sur Ctrl-J dans git gui sur l'élément supprimé.
Vous devez vous connecter pour publier un commentaire.
La sortie vous indique ce que vous devez faire.
git reset HEAD cc.properties
etc.Ce sera unstage la rm opération. Après cela, l'exécution d'un
git status
encore vous diront que vous avez besoin de faire ungit checkout -- cc.properties
pour obtenir le fichier.Mise à jour:
J'ai ceci dans mon fichier de config
que j'utilise habituellement pour unstage choses.
git reset HEAD \*
et puisgit checkout -- .
rm -r ./engines
- oops. Maintenantgit reset engines; git checkout engines
../engines
un rachat ou d'un répertoire dans un repo, car un répertoire ne semble pas fonctionner comme ça avec la version git 2.21.0?git checkout -- dirname
=>error: pathspec 'dirname' did not match any file(s) known to git
. (La même chose sans le--
argument diviseur.) [Remplacer dirname avec un répertoire réel, évidemment.]Vous ai mis en scène la suppression de sorte que vous devez faire:
git checkout .
vérifie seulement de l'index où la suppression a déjà été mis en scène.git checkout HEAD fileToDelete
fait le tour.Il suffit de ne
git checkout path/to/file-I-want-to-bring-back.txt
git status
dire à ce sujet?git checkout HEAD -- file.ext
contribué à restaurer.Pour récupérer tous les unstaged suppressions à la fois, automatiquement, sans spécification de chaque chemin unique:
Pour récupérer tous les mise en scène suppressions à la fois, automatiquement, sans spécification de chaque chemin unique:
git status --long | grep 'deleted:' | awk '{print $2}' | xargs git reset HEAD --
.git ls-files -d | sed -e "s/\(.*\)/'\1'/" | xargs git checkout --
fonctionne.Puisque vous êtes en train de faire un
git checkout .
, il semble que vous essayez de restaurer votre branche à la dernière validation de l'état.Vous pouvez réaliser cela avec un
git reset HEAD --hard
Avertissement
Cela peut supprimer toutes vos dernières modifications et unstage vos modifications, par exemple, vous pouvez perdre du travail. Il peut être ce que vous voulez, mais de vérifier les docs pour s'en assurer.
si vous avez utilisé
pour supprimer un fichier, puis
ne fonctionne pas, donc dans ce cas
devrait fonctionner
Voici la commande qui m'a aidé sur mon mac. J'ai essayé quelques autres solutions, mais ils n'ont pas de travail pour moi.
De version Git sur OSX Mavericks
Commande
Utilisation
git ls-files
à la caisse supprimés(-d) ou modifié (m) des fichiers.voir Comment puis-je restaurer uniquement les fichiers modifiés sur un git checkout?
git ls-files -d | xargs -I{} git checkout "{}"
.Si vous souhaitez restaurer tous les fichiers à la fois
N'oubliez pas d'utiliser la période, car il indique à git pour récupérer tous les fichiers.
Cette commande permet de réinitialiser la tête et unstage de tous les changements:
Puis le lancer pour restaurer tous les fichiers:
Ensuite de faire un git status, vous obtiendrez:
Faire, vous pouvez vous souhaitez voir cette
qui va pour le cas où vous avez utilisé
avant de vous engager quelque chose.
Vous pouvez aussi vous voulez vous débarrasser de créer des fichiers qui n'ont pas encore été créé. Et vous n'en voulez pas. Avec :
git checkout -- .
n'aide pas à récupérer les fichiers supprimés et est l'équivalent de ce que le demandeur a essayé:git checkout .
. La partie qui peut fonctionner est celui que vous n'avez pas de copie:git checkout <file_path>
.Trouvé ce post en cherchant des réponses sur la façon de l'onu-pour supprimer un fichier qui a été supprimé dans mon répertoire de travail après une fusion à partir d'une autre branche. Pas d'enregistrement a été encore faite après la fusion.
Depuis qu'il a été une fusion est en cours, je ne pouvais pas ajouter à l'aide:
J'ai eu à faire un autre pas en plus le reset pour faire le fichier:
Si vous n'avez pas commis l'un des changements tout ce que vous avez à faire est de ranger ces changements et vous serez de retour pour le dernier commit.
si vous êtes à la recherche pour une suppression de répertoire.
Pour moi ce qui a fonctionné a été
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ée dans la direction que nous voulons que le fichier d'aller dans)
Après que la commande s'exécute, le fichier restauré va exister dans l'emplacement d'origine (qui devra être comited)
git checkout master path/to/the/file.bin
de sorte que vous undelete ce fichier sans perdre les autres changements que vous avez pu faire. PS: ce devrait être la accepté de répondre...Si vous avez installé ToroiseGIT alors juste sélectionner "de Revenir..." dans le menu de dossier parent pop-up menu.
ATTENTION: engager des travaux que vous souhaitez garder en premier.
Vous pouvez réinitialiser votre espace de travail (et de récupérer les fichiers supprimés)
./*
../*
sera élargi par bash pour correspondre à ces fichiers avant de les envoyer à git.J'ai eu le même problème, toutefois, aucune des deux solutions n'a fonctionné pour moi.
Ce que j'ai fait était de:
- créer un fichier vide avec le même nom
- comparer ce fichier avec son histoire locale
- copie de l'histoire à travers de fichier vide.
1.Certains s'engagent à laquelle vous voulez revenir à l'aide de:
2.Revenir à valider à l'aide de :
Maintenant vous branche locale aurait tous les fichiers en particulier