Datei, die wirklich vorhanden ist, kann nicht entfernt werden - fatal: pathspec ... stimmte nicht mit Dateien überein
Ich habe eine Datei unter Git-Kontrolle, die einfach nicht gelöscht wird. Der fehlerhafte Befehl lautet:
$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files
Unten liste ich die Verzeichnisinhalte, Zweige usw. auf. Bisher habe ich versucht, rm aus dem Verzeichnis heraus zu verwenden und zu entkommen, nur für den Fall, dass es lustige Charaktere gibt, und ich bin wirklich ratlos. Ich habe das Web und SO durchsucht, konnte dies aber nicht speziell finden. Danke im Voraus!
$ git branch -a
* dot-output
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/modelspace
$
$ git status
# On branch dot-output
# Untracked files:
# ...
$ ls .idea/
ant.xml encodings.xml modules.xml workspace.xml
compiler.xml inspectionProfiles scopes
copyright libraries testrunner.xml
dictionaries misc.xml vcs.xml
$ ls -al
total 56
drwxr-xr-x 16 matt staff 544 Apr 10 11:33 .
drwxr-xr-x@ 33 matt staff 1122 Apr 10 09:40 ..
-rw-r--r--@ 1 matt staff 12292 Apr 10 11:19 .DS_Store
drwxr-xr-x 18 matt staff 612 Apr 10 11:39 .git
-rw-r--r-- 1 matt staff 98 Mar 6 13:40 .gitignore
drwxr-xr-x 16 matt staff 544 Apr 10 11:34 .idea
-rw-r--r-- 1 matt staff 1113 Feb 25 11:07 README
...
$ head -n 2 .idea/workspace.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files
AKTUALISIEREN: Antworten von Nevik und Boris haben sehr geholfen. Mir wurde klar, dass ich durch eine Reihe von Dingen verwirrt war, von denen einige durch IntelliJ IDEA (ein Werkzeug, das ich im Allgemeinen liebe, übrigens) noch verschärft wurden. Erstens ist die Nachricht 'fatal: pathspec' von git rm sowohl nicht hilfreich als auch irreführend (nach Meinung dieses Vanille-Benutzers). Zweitens hatte ich die Datei in .gitignore, hatte sie aber entfernt, bevor ich meine Frage stellte. Es wurde jedoch auch unabhängig von git in die IDEA-Funktion "Ignorierte Dateien" aufgenommen und im Projekt-Viewer als solches angezeigt (statt nicht verfolgt, wie der git-Status zeigte). Schließlich lief IDEA, während ich experimentierte, und es sieht so aus, als würde die Datei unmittelbar nach meinem rm neu erstellt. Wenn ich also verwirrendes Git-Verhalten bekomme, sollten Sie IDEA beenden und beim Debuggen allein in der Befehlszeile (und in gitk) arbeiten. Und diese SO-Benutzer sind großartig. Danke noch einmal!
quelle
rm
statt zu entfernengit rm
?git clean -f .idea/workspace.xml
damit die nicht verfolgte Datei entfernen.Antworten:
Ihre Datei
.idea/workspace.xml
unterliegt nicht der Git-Versionskontrolle. Sie haben es entweder noch nicht hinzugefügt (Git-Status / Nicht verfolgte Dateien überprüfen) oder ignoriert (mit .gitignore- oder .git / info / exclude-Dateien)Sie können dies mit dem folgenden Befehl git überprüfen, der alle ignorierten Dateien auflistet:
quelle
Es klappt. Sie fügen eine neue Datei mit einem Rechtsklick hinzu -> erstellen Sie eine neue Datei und löschen Sie diese sofort danach. Die Datei wird in die Liste der nicht verfolgten Dateien verschoben.
quelle
rm
ein Verzeichnis oder eine Datei benötigt, muss er diese nicht zu git hinzufügen, wenn sie nicht bereits unter git-Versionskontrolle aufgeführt ist.Ich weiß, dass dies nicht das Problem des OP ist, aber ich bin auf denselben Fehler mit einer völlig anderen Grundlage gestoßen, deshalb wollte ich ihn nur hier ablegen, falls jemand anderes das gleiche hat. Dies ist Windows-spezifisch und ich gehe davon aus, dass Linux-Benutzer davon nicht betroffen sind.
Ich hatte eine LibreOffice-Dokumentdatei, nennen Sie es
final report.odt
. Ich habe später den Fall geändertFinal Report.odt
. In Windows zählt dies nicht einmal als Umbenennung.final report.odt
,Final Report.odt
,FiNaL RePoRt.oDt
Sind alle gleich. Unter Linux sind diese alle unterschiedlich.Als ich schließlich zu ging
git rm "Final Report.odt"
und den Fehler "Pfadspezifikation stimmte mit keinen Dateien überein" bekam. Nur wenn ich das Originalgehäuse zum Zeitpunkt des Hinzufügens der Datei verwendetgit rm "final report.odt"
habe, hat es funktioniert.Lektion gelernt: Um den Fall zu ändern, hätte ich stattdessen tun sollen:
Auch hier war das nicht das Problem für das OP. und würde einen Linux-Benutzer nicht betreffen, wie seine Beiträge zeigen, dass er es eindeutig ist. Ich füge es nur für andere hinzu, die dieses Problem möglicherweise in Windows Git haben und auf diese Frage stoßen.
quelle
Wenn Ihre Datei
idea/workspace.xml
zu .gitignore (oder seinem übergeordneten Ordner) hinzugefügt wird, müssen Sieadd
sie nur manuell zur Git-Versionskontrolle hinzufügen . Sie können es auch mit TortoiseGit hinzufügen. Nach dem nächsten Push werden Sie sehen, dass Ihr Problem gelöst ist.quelle
rm
ein Verzeichnis oder eine Datei benötigt, muss er es nicht zu git hinzufügen, wenn es nicht bereits unter git version control aufgeführt ist!In meinem Fall gab es etwas völlig Seltsames, bei dem ich mir nicht sicher bin, was die Ursache war. Zuvor wurde ein ganzer Ordner festgeschrieben. Ich konnte es in Git, Windows Explorer und GitHub sehen, aber alle Änderungen, die ich am Ordner selbst und den darin enthaltenen Dateien vorgenommen habe, wurden ignoriert. Das Verwenden, um
git check-ignore
zu sehen, was es ignorierte, und der Versuch, es mit zu entfernen,git rm --cached
hatten keine Auswirkungen. Die Änderungen konnten nicht inszeniert werden.Ich habe es behoben durch:
quelle
Persönlich bin ich in diesem Szenario auf eine ähnliche Fehlermeldung gestoßen:
Ich habe einen Ordner erstellt, der leer war. Solange er leer ist, wird bei der Eingabe
git add *
dieser leere Ordner natürlich nicht berücksichtigt. Als ich versuchte zu rennengit rm -r *
oder einfach nur zu git,rm my_empty_folder/ -r,
bekam ich diese Fehlermeldung.Die Lösung besteht darin, es einfach ohne Git zu entfernen:
rm -r my_empty_folder/
oder eine Datendatei in diesem Ordner zu erstellen und sie dann hinzuzufügen (git add my_no_long_empty_folder
)quelle
Solche Schritte haben mir geholfen:
quelle
Verschieben Sie .gitignore vorübergehend nach .gitignore.bck
quelle