Datei, die wirklich existiert, kann nicht entfernt werden - fatal: pathspec… stimmte nicht mit Dateien überein

165

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!

Matthew Cornell
quelle
15
Haben Sie versucht, die Datei einfach mit rmstatt zu entfernen git rm?
Nevik Rehnel
1
@NevikRehnel Ja, ich hatte gedacht, das zu versuchen, danke, aber es sieht so aus, als ob IntelliJ IDEA (das ich ausgeführt hatte) nach jedem Löschen wiederbelebt wurde. Doh!
Matthew Cornell
Ich arbeite mit Eclipse und Attlassian SourceTree ... Ihre Frage hilft mir, dieses Problem zu lösen. Vielen Dank !
Manu
Sie können git clean -f .idea/workspace.xmldamit die nicht verfolgte Datei entfernen.
Chemturion

Antworten:

134

Ihre Datei .idea/workspace.xmlunterliegt 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:

git ls-files --others -i --exclude-standard
Boris Brodski
quelle
Das hat sehr geholfen, Boris. Danke dir! Ich habe meine Frage aktualisiert, um die Dinge zusammenzufassen, die vor sich gingen (IDEE usw.)
Matthew Cornell
23
$>git add .
$>git rm file_Name  

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.

Gnganpath
quelle
2
Wenn es Ihnen Fehler beim Löschen der Datei gibt, dann können Sie beim Löschen der Datei -f etwas verwenden wie: $> git rm -f Dateiname
Abhinav bhardwaj
1
Wenn jemand rmein Verzeichnis oder eine Datei benötigt, muss er diese nicht zu git hinzufügen, wenn sie nicht bereits unter git-Versionskontrolle aufgeführt ist.
Mohammad Kermani
8

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ändert Final Report.odt. In Windows zählt dies nicht einmal als Umbenennung. final report.odt, Final Report.odt, FiNaL RePoRt.oDtSind 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 verwendet git rm "final report.odt"habe, hat es funktioniert.

Lektion gelernt: Um den Fall zu ändern, hätte ich stattdessen tun sollen:

git mv "final report.odt" temp.odt
git mv temp.odt "Final Report.odt"

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.

Codierung
quelle
1
Dies kann unter Windows passieren, wenn sich ein Teil des Pfads von dem unterscheidet, was in git aufgezeichnet wurde. Ich konnte es umgehen, indem ich eine Bash-Shell in Windows
Rattle
3

Wenn Ihre Datei idea/workspace.xml zu .gitignore (oder seinem übergeordneten Ordner) hinzugefügt wird, müssen Sie addsie 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.

Mit TortoiseGit zur Git-Versionierung hinzufügen

Lord Nighton
quelle
1
Wenn jemand rmein 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!
Mohammad Kermani
0

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-ignorezu sehen, was es ignorierte, und der Versuch, es mit zu entfernen, git rm --cachedhatten keine Auswirkungen. Die Änderungen konnten nicht inszeniert werden.

Ich habe es behoben durch:

  1. Erstellen einer Kopie des Ordners und der Dateien an einem anderen Speicherort.
  2. Ich habe das Original gelöscht, das irgendwie ignoriert wurde.
  3. Übernehmen und pushen Sie dieses Update.
  4. Schließlich fügte ich die Dateien und den Ordner wieder hinzu und git sah und reagierte wieder wie erwartet darauf.
  5. Bühne und begehen Sie dies, und Sie können loslegen! :) :)
Will Strohl
quelle
0

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 rennen git 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)

Billal Begueradj
quelle
0

Solche Schritte haben mir geholfen:

  1. git hinzufügen.
  2. git stash
Mykola
quelle
-6

Verschieben Sie .gitignore vorübergehend nach .gitignore.bck

user4551034
quelle