190 votes

Puis-je annuler un `git clean -fdx`?

Je suivais les instructions pour créer des pages github et j'ai oublié de descendre dans mon sous-répertoire git. En conséquence, je viens de parcourir tout un répertoire de documents avec git clean -fdx . Y a-t-il un moyen de réparer cette terrible erreur?

173voto

Mat Points 104488

Non, ces fichiers sont partis.

(Juste vérifié sur Linux: git clean appelle unlink() , et ne sauvegarde rien au préalable.)

72voto

Peter Ajtai Points 26377
 git clean -fdxn
 

Fera un essai à blanc et vous montrera quels fichiers seront supprimés si vous exécutiez

 git clean -fdx
 

(bien sûr, ce n'est utile que si vous le savez à l'avance, mais pour la prochaine fois)

25voto

kusma Points 3719

Pas de. "git nettoyage fdx" va supprimer tous les fichiers et répertoires que git n'a pas de piste à partir de votre répertoire de travail. Parce que Git n'est pas le suivi de ces fichiers, il ne dispose d'aucune des sauvegardes de ces fichiers. Au moins pas habituellement.

Si vous avez fait un "git add" sur l'un de ces fichiers relativement récemment (mais abandonné l'commit), il y a une chance que vous pouvez trouver avec git "fsck --perdu-trouvé". Il vaut la peine d'essayer, mais ne pas obtenir vos espoirs trop.

Dans l'avenir, vous devriez envisager plutôt de commettre quelques fois, trop souvent, que quelques fois trop rarement. De cette façon, vous aurez au moins avoir une sauvegarde locale, même si vous ne finissent pas de pousser ces s'engage à une télécommande.

20voto

Marcello de Sales Points 1771

Comme @kusma mentionné ci-dessus, si vous avez de la chance (si vous avez déjà "git add"), vous pouvez utiliser ce qui suit pour extraire l'objet entier:

 git fsck | awk '{print $3}' | xargs git show | tee searchresults.log
 

De cette façon, il recherchera tous les types de morceaux, collectera les diffs complets et ajoutera à un fichier que vous pouvez extraire le fichier perdu. Dans mon cas, j'avais perdu toute une classe Java.

10voto

dougallj Points 299

J'ai eu ce problème aujourd'hui.

Comme d'autres l'ont dit, Git ne conserve pas les fichiers.

La seule façon de l'annuler consiste à utiliser un utilitaire d'annulation. J'ai utilisé "extundelete" et tout récupéré, mais votre système de fichiers / kilométrage peut varier.

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