2009-06-28 6 views
28

Je souhaite supprimer tous les fichiers de Git à ~/bin /.Impossible de supprimer les fichiers récursivement de Git

Je cours

git rm -r --cached ~/.vim/*      # Thanks to Pate in finding --cached! 

Je reçois

fatal: pathspec '.vim/colors' did not match any files 

Ce message d'erreur me suggère d'utiliser les chemins suivants, depuis ~/.vim/** ne fonctionne pas

~/.vim/*  # I get the error 
~/.vim/*/*/* # This removes files from the index at ~/.vim/folderA/folderB/file1.txt 
~/.vim/*/*  # similar error as to the first PATH 

Comment pouvez-vous supprimer tous les fichiers et sous-répertoires à ~/.vim de Git?

-

Répondre

36
git rm -r --cached ~/.vim/* 
fatal: pathspec '.vim/colors' did not match any files 

1/Vous n'avez pas besoin '*':

git rm -r --cached ~/.vim 

prendra soin de tout objet d'un suivi sous-dossiers. 2/fatal: pathspec '.vim/colors' did not match any files 2/fatal: pathspec '.vim/colors' did not match any files 2/fatal: pathspec '.vim/colors' did not match any files signifie simplement l'une de vos commandes que vous avez essayée avant que celle indiquée dans 1/ait fonctionné, et il n'y a plus de fichier à supprimer!

# to test that command, first reinitialize the state of the repository 
# save first if you have any other current modifications 
$ git reset --hard 

# then check the rm works 
$ git rm -r --cached ~/.vim 
rm '.vim/aPath/aFile1' 
rm '.vim/aSecondPath/aFile2' 
rm '.vim/aThirdPath/aFile3' 

# try it again 
$ git rm -r --cached ~/.vim 
fatal: pathspec '.vim/colors 
+0

@Vonc: Merci pour votre aide! –

9

Vous voulez les supprimer, même s'il y a des modifications locales? Ou voulez-vous supprimer de l'index mais conserver les fichiers eux-mêmes?

git rm -r --cached bin/* 

Essayez aussi:

git help rm 
+0

@Pate: Je veux supprimer les fichiers de Git de telle sorte que j'ai les fichiers dans mon ordinateur après le retrait. –

+0

Cette réponse est la base de la question modifiée. –

0

Vous devez comprendre ce que * fait un peu. Les applications ne voient pas * (ou d'autres caractères globbing) - elles reçoivent toutes les correspondances du glob en tant qu'arguments individuels.

Pour mieux comprendre cela, mettre echo en face de votre première commande et voir ce qu'il imprime:

git rm -r --cached ~/.vim/* 

Vous verrez chaque match, y compris des choses que le programme ne sait pas comment fonctionner sur (qui comprend .vim/colors).

+0

Je pense que cette réponse aurait dû inclure l'écho décrit, ainsi qu'une solution au problème réel de l'OP. – superbeck

1

Ou il se peut que le répertoire que vous essayez de supprimer récursivement se trouve dans la liste .gitignore. Je viens de rencontrer ça. J'ai ./vendors dans ma liste d'ignorés, et il y a beaucoup de répertoires sous ./vendors mais parce que tout ce qui est dans les vendeurs est ignoré, il ne supprime pas quelque chose comme ./vendors/assetic parce que ce n'est pas vraiment dans le repo. J'ai oublié que c'était dans la liste des ignorés :)

+0

... merci ... :) –

Questions connexes