J'ai supprimé des fichiers.
Je n'ai pas encore commis.
Je souhaite 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 git checkout .
ne réinitialise-t-il pas l'espace de travail sur HEAD
?
La sortie vous indique ce que vous devez faire. git reset HEAD cc.properties
etc.
Cela désamorcera l’opération rm. Après cela, réexécuter git status
vous indiquera que vous devez créer un git checkout -- cc.properties
pour récupérer le fichier.
Mise à jour: J'ai ceci dans mon fichier de configuration
$ git config alias.unstage
reset HEAD
que j'utilise habituellement pour déconstruire des trucs.
Vous avez mis en scène la suppression, vous devez donc:
git checkout HEAD cc.properties store/README store/cc.properties
git checkout .
extrait uniquement de l'index où la suppression a déjà été effectuée.
Il suffit de faire git checkout path/to/file-I-want-to-bring-back.txt
Pour récupérer toutes les suppressions unstaged en même temps, automatiquement, sans spécifier chaque chemin:
git ls-files -d | xargs git checkout --
Pour récupérer toutes les suppressions staged en même temps, automatiquement, sans spécifier chaque chemin:
git status | grep 'deleted:' | awk '{print $2}' | xargs git checkout --
Puisque vous utilisez un git checkout .
, il semble que vous tentiez de restaurer votre branche dans le dernier état de validation.
Vous pouvez y parvenir avec un git reset HEAD --hard
Cela pourrait supprimer toutes vos dernières modifications et décaler vos modifications, par exemple, vous pourriez perdre du travail. C'est peut être ce que vous voulez, mais vérifiez la documentation pour vous en assurer.
si vous avez utilisé
git rm filename
supprimer un fichier puis
git checkout path/to/filename
ne fonctionne pas, alors dans ce cas
git checkout HEAD^ path/to/filename
devrait marcher
Voici la commande qui m'a aidé sur mon mac. J'ai essayé quelques-unes des autres solutions, mais elles ne fonctionnaient pas pour moi.
Version de Git sur OSX Mavericks
mac-pro:main chris$ git version
git version 1.8.5.2 (Apple Git-48)
Commande
git checkout HEAD -- path/to/file/file.cc
git checkout HEAD -- client/src/pp_web/index.cljs
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:
$ git reset HEAD .
Puis lancez ceci pour restaurer tous les fichiers:
$ git checkout .
Ensuite, en faisant un statut de git, vous aurez:
$ git status
On branch master
Your branch is up-to-date with 'Origin/master'.
Utilisez git ls-files
pour extraire les fichiers supprimés (-d) ou modifiés (-m).
git checkout $(git ls-files -d)
voir Comment puis-je restaurer uniquement les fichiers modifiés sur une caisse Git?
Voulez-vous voir ceci
cela vaut pour les cas où vous avez utilisé
git checkout -- .
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 ne les voulez pas. Avec :
git reset -- .
Vous avez trouvé cet article en cherchant des réponses sur la suppression d'un fichier supprimé de mon répertoire de travail après une fusion dans une autre branche. Aucune validation n'a encore été effectuée après la fusion . Comme il s'agissait d'une fusion en cours, je ne pouvais pas simplement le rajouter en utilisant
$ git reset <commitid#-where-file.cpp-existed> file.cpp
En plus de la réinitialisation, je devais faire une autre étape pour ramener le fichier:
$ git checkout -- file.cpp
Si vous n'avez pas validé de modifications, tout ce que vous avez à faire est de les cacher et vous revenez au dernier commit en cours.
git stash
git stash clear
git clean
si vous recherchez un répertoire supprimé.
git checkout ./pathToDir/*
Si vous avez installé ToroiseGIT, sélectionnez simplement l'option "Revert ..." pour le menu contextuel du dossier parent.
Vous pouvez réinitialiser votre espace de travail (et récupérer les fichiers supprimés)
git checkout ./*
ATTENTION: engagez tout travail que vous souhaitez conserver en premier.
Pour moi ce qui a fonctionné était 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)
Une fois cette commande exécutée, le fichier restauré existera à l’emplacement initial (qui devra être com-
J'ai eu le même problème, mais aucune des solutions ci-dessus n'a fonctionné pour moi. Ce que j'ai fini par faire était:
- créer un fichier vide du même nom
- compare ce fichier à son historique local
- copier l'historique dans un fichier vide.