2009-06-28 4 views
28

Ich möchte alle Dateien aus Git bei ~/bin/entfernen.Dateien können nicht rekursiv aus Git entfernt werden

Ich betreibe

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

I

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

Dieser Fehler messsage die folgenden Pfade zu verwenden, schlägt vor, mich zu bekommen, da ~/.vim/** nicht

~/.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 
funktioniert

Wie können Sie alle Dateien und Unterverzeichnisse bei ~/.vim von Git entfernen?

-

Antwort

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

1/Sie können als '*' nicht brauchen:

git rm -r --cached ~/.vim 

Pflege von jedem nehmen verfolgt Unterdateien.

2/fatal: pathspec '.vim/colors' did not match any files bedeutet einfach einen Ihrer Befehle, den Sie ausprobiert haben, bevor der in 1/gelistete Befehl funktioniert hat und es keine weitere Datei mehr zu löschen gibt!

# 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: Vielen Dank für Ihre Hilfe! –

9

Sie wollen, dass sie selbst entfernen, wenn lokale Änderungen?

git rm -rf bin/* 

Oder möchten Sie aus dem Index entfernen, aber die Dateien selbst behalten?

git rm -r --cached bin/* 

auch ausprobieren:

git help rm 
+0

@Pate: Ich möchte die Dateien von Git entfernen, so dass ich die Dateien in meinem Computer nach dem Entfernen haben. –

+0

Diese Antwort ist die Grundlage der geänderten Frage. –

0

Sie sollten verstehen, was * ein bisschen zuerst tut.

Anwendungen sehen nicht * (oder andere globbing Zeichen) - sie erhalten alle Übereinstimmungen des Globs als einzelne Argumente.

dies besser verstehen zu können, setzen echo vor dem ersten Befehl und sehen, was es ausdruckt:

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

Sie werden jedes einzelne Spiel sehen, darunter Dinge, dass das Programm nicht weiß, wie man operieren (einschließlich .vim/colors).

+0

Ich denke, dass diese Antwort das beschriebene Echo enthalten sollte, sowie eine Lösung für das eigentliche Problem, das das OP hat. – superbeck

1

Oder es könnte sein, dass das Verzeichnis, das Sie versuchen, rekursiv zu entfernen, in der .gitignore-Liste ist. Ich bin gerade auf dieses Problem gestoßen. Ich habe ./vendors in meiner Ignorierliste, und es gibt eine Reihe von Verzeichnissen unter ./vendors, aber da alles in Vendors ignoriert wird, löscht es eigentlich nichts wie ./vendors/assetic, weil es nicht wirklich im Repo ist. Ich habe vergessen, dass es in der Ignorierliste war :)

+0

... danke ... :) –