web-dev-qa-db-fra.com

Impossible de supprimer récursivement les fichiers de Git

Je veux supprimer tous les fichiers de Git dans ~/bin /.

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, car ~/.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 de ~/.vim de Git?

-

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

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

 git rm -r --cached ~/.vim

prendra soin de tous les sous-fichiers suivis.

2/fatal: pathspec '.vim/colors' did not match any files signifie simplement qu'une de vos commandes que vous avez essayée avant que celle listée en 1/ne fonctionne, et qu'il n'y ait 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
37
VonC

Vous souhaitez les supprimer même s'il y a des modifications locales?

git rm -rf bin/*

Ou souhaitez-vous supprimer de l'index mais conserver les fichiers eux-mêmes?

git rm -r --cached bin/*

Essayez également:

git help rm
10
Roger Pate

Ou il se peut que le répertoire que vous essayez de supprimer récursivement soit dans la liste .gitignore. Je viens de rencontrer cela. J'ai ./vendors dans ma liste d'ignorance, et il y a un tas de répertoires sous ./vendors mais parce que tout dans les fournisseurs est ignoré, il ne supprime en fait rien comme ./vendors/assetic parce qu'il n'est pas réellement dans le repo. J'ai oublié que c'était dans la liste des ignorés :)

1
targnation

Vous devez comprendre ce que * fait un peu d'abord.

Les applications ne voient pas * (ou d'autres caractères de globbing) - ils reçoivent toutes les correspondances du glob en tant qu'arguments individuels.

Pour mieux comprendre cela, mettez echo devant votre première commande et voyez ce qu'elle affiche:

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

Vous verrez chaque correspondance individuelle, y compris les éléments sur lesquels le programme ne sait pas comment fonctionner (ce qui inclut .vim/colors).

0
Dustin