21 votes

Git : Comment vérifier tous les fichiers supprimés ?

Dans git, je sais comment récupérer des fichiers individuels qui ont été supprimés en utilisant la commande git checkout -- [<paths>...] (ce qui est recommandé lorsque vous faites git status .

Pour obtenir tous les fichiers, vous pouvez créer une liste et la donner comme argument à la commande ci-dessus.

Cependant, lorsque vous souhaitez simplement obtenir tous les fichiers qui ont été supprimés (c'est-à-dire rm -rf dans votre cwd et ensuite vous souhaitez restaurer tous les fichiers), générer cette liste est inélégant.

Comment récupérer tous les fichiers supprimés ?

27voto

torek Points 25463

La génération de la liste n'est pas que dur :

git diff --no-renames --name-only --diff-filter=D

Pour qu'il soit adapté à git checkout utiliser -z y xargs -0 :

git diff --no-renames --name-only --diff-filter=D -z |
    xargs -0 git checkout --

Notez que l'utilisation de git checkout -f -- . est tout à fait différent de ce qui précède, car git checkout -f -- . écrasera les fichiers qui sont modifiés mais pas encore ajoutés à l'index, tandis que la méthode ci-dessus seulement extraire, à partir de l'index, les fichiers qui sont encore en l'index mais ne sont plus dans l'arbre de travail.

(Si vous n'avez pas de tels fichiers modifiés, git checkout -f -- . fonctionnera, mais il en sera de même pour git checkout -- . .)

12voto

jthill Points 10384

lorsque vous souhaitez simplement récupérer tous les fichiers qui ont été supprimés (par exemple, rm -rf dans votre cwd, puis vous souhaitez restaurer tous les fichiers).

Vous voulez

git checkout-index -a

6voto

Gayan Points 2314

Je fais habituellement un

1. $ git checkout .

pour vérifier les changements, suivi par

2. $ git clean -fd

Cela permettrait de supprimer les fichiers non tracés. f pour les fichiers et d pour les répertoires.

Vous pouvez aussi faire un essai avant la deuxième étape en faisant

git clean -fdn

Il s'agit d'une liste de fichiers et de répertoires à supprimer.

Pour plus d'informations, veuillez consulter le site annuler les changements

2voto

Marina Liu - MSFT Points 23516

Si les changements pour la suppression des fichiers n'ont pas été validés, vous pouvez utiliser la fonction git checkout -- . .

Si les modifications des fichiers à supprimer ont été validées, vous pouvez utiliser la fonction git reset --hard HEAD~ .

2voto

dafnahaktana Points 463

J'ai pu le faire avec :

for f in $(git diff --no-renames --name-only --diff-filter=D);do git checkout -- $f ;done

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X