12
votes

Comment annuler Git RM -RF Dirname sans premier commettre?

J'ai fait: xxx

regarder d'autres répondeurs, git reset --hard tête , git checkout -f et et et Git Reflog n'a pas fonctionné, apparemment parce qu'il n'y a pas de tête pour revenir à, ni un engagement de récupérer les fichiers de.

existe-t-il un moyen d'obtenir les fichiers? < / p>


1 commentaires

Veuillez mettre à jour la réponse acceptée à celle qui permet de récupérer les fichiers.


6 Réponses :


1
votes

Nope, autant que je sache. Je crois que Git Diffuser les fichiers, tout comme faire rm -rf fait. Peu importe qu'il sache si cela sait sur les fichiers ou non, il nuke volontiers le répertoire. Vraiment, votre seul recours est d'essayer d'utiliser un outil de récupération de fichiers comme si vous avait effectué rm -rf


0 commentaires

9
votes

Il n'y a aucun moyen.

généralement, git rm Les fichiers ont déjà été commis avant de les supprimer, de sorte que vous ne perdiez aucun de vos travaux. Cependant, en utilisant -f remplace ce chèque.

bref:

  • n'utilise pas -f .
  • Ne touchez rien que vous n'avez pas commis.

2 commentaires

Juste comme Unix - -f signifie que vous feriez mieux d'être sûr de ce que vous faites.


Considérant que je viens de récupérer mes données, ce n'est tout simplement pas vrai et ne devrait pas être la réponse acceptée.



0
votes

Si git ne suive pas le répertoire dirname , il ne vous permettra pas de supprimer le répertoire avec git rm -rf car il ne le suit pas. Vous devrez obtenir une erreur comme xxx

seul moyen que vous auriez pu supprimer est si vous aviez fait un git Ajouter. ou git Ajouter DirName après le git init . Si tel est le cas, vos fichiers sont partis et vous ne pouvez pas les récupérer car il n'a jamais été commis ni que Git ne le suive pas. C'est aussi bon que de faire un rm -rf sur un dossier normal (et ne peut pas récupérer sauf si vous avez des sauvegardes)


4 commentaires

Est-ce que ça? Je ne l'ai pas testé, mais je pensais que le drapeau -f supprimera cette erreur.


Sauf si vous utilisez -f ? Cela «remplacera le chèque à jour». Quoi que cela signifie.


@Matt - non, cela ne réduit pas cela. -f dans git rm est uniquement pour remplacer le chèque à jour.


Je viens de le tester sur Git 1.7.5.4. git rm -rf ne toucherait pas un répertoire non étalé, mais il purgera volontiers une mise en scène mais non commise une.



1
votes

GIT RESET --HARD Aide alors que la suppression n'était pas encore engagée et, d'une manière générale, la suppression a été interrompue par Ctrl + Z


0 commentaires

8
votes

AVERTISSEMENT : Exécution GIT PRAUDE sans le -N option (1) effacera vos données inaccessibles.

Il peut y avoir un moyen, en utilisant GIT Prime et git cat-fichier .

exécuté git prune -n ​​ va lister quels objets seraient supprimés par élagage: xxx

chaque ligne correspond à un fichier supprimé.

maintenant, en utilisant git cat-fichier , nous sommes en mesure de restaurer le contenu du fichier supprimé dans un nouveau fichier: xxx


(1) du Prime git DOCS:

nom
git-pruneal - pruneaux tous les objets inaccessibles de la base de données d'objets

Options

- Side-coureur
ne rien retirer; juste signaler ce qu'il serait enlever.


0 commentaires

0
votes

Si vous ne l'avez pas encore commis, vous pouvez récupérer le répertoire en faisant:

git stash
git stash pop
git co dirname


0 commentaires