impossible de supprimer un fichier qui existe vraiment - fatal: pathspec ... ne correspond à aucun fichier
J'ai un fichier sous contrôle git qui ne sera tout simplement pas supprimé. La commande qui échoue est la suivante:
$ git rm .idea/workspace.xml
fatal: pathspec '.idea/workspace.xml' did not match any files
Ci-dessous, je liste le contenu du répertoire, les branches, etc. Jusqu'ici, j'ai essayé de rm depuis le répertoire et de m'échapper au cas où il y aurait des personnages amusants, et je suis vraiment perplexe. J'ai cherché sur le Web et SO mais je ne l'ai pas trouvé spécifiquement. Merci d'avance!
$ 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
UPDATE: Les réponses de Nevik et Boris ont beaucoup aidé. J'ai réalisé que j'étais troublé par un certain nombre de choses, dont certaines étaient exacerbées par IntelliJ IDEA (un outil que j'adore en général, BTW). Tout d'abord, le message 'fatal: pathspec' de git rm est à la fois inutile et trompeur (de l'avis de l'utilisateur de Vanilla). Deuxièmement, j'avais le fichier dans .gitignore, mais je l'avais supprimé avant de poser ma question. Cependant, il était également inclus dans la fonction Fichiers ignorés d'IDEA indépendamment de git, et affiché en tant que tel dans la visionneuse du projet (au lieu d'être non suivi, comme le montre l'état de git). Enfin, j'avais IDEA en cours d’exécution, et il semble que le fichier soit recréé immédiatement après ma salle. Donc, ce que je retiens, c'est que si le comportement de Git est déroutant, veillez à quitter IDEA et à ne travailler que dans la ligne de commande (et gitk) lors du débogage. Et ça SO les utilisateurs sont géniaux. Merci encore!
Votre fichier .idea/workspace.xml
n'est pas sous contrôle de version git. Vous ne l'avez pas encore ajouté (vérifiez l'état de git/fichiers non suivis) ou vous l'avez ignoré (à l'aide de fichiers .gitignore ou .git/info/exclude
Vous pouvez le vérifier en utilisant la commande suivante git, qui répertorie tous les fichiers ignorés:
git ls-files --others -i --exclude-standard
$>git add .
$>git rm file_Name
Ça marche. Vous ajoutez un nouveau fichier en cliquant avec le bouton droit de la souris -> créer un nouveau fichier, puis vous le supprimez immédiatement. Le fichier irait à la liste des fichiers non suivis.
Je sais que ce n'est pas le problème du PO, mais j'ai rencontré la même erreur avec une base totalement différente, je voulais donc la laisser tomber ici au cas où quelqu'un d'autre aurait la même chose. Ceci est spécifique à Windows, et je suppose que cela n’affecte pas les utilisateurs de Linux.
J'avais un fichier doc LibreOffice, appelez-le final report.odt
. J'ai plus tard changé son cas pour Final Report.odt
. Sous Windows, cela ne compte même pas comme un changement de nom. final report.odt
, Final Report.odt
, FiNaL RePoRt.oDt
sont tous identiques. Sous Linux, ils sont tous distincts.
Lorsque je suis finalement allé à git rm "Final Report.odt"
et que j'ai eu l'erreur "pathspec ne correspond à aucun fichier". Ce n’est que lorsque j’utilise le boîtier original que le fichier a été ajouté - git rm "final report.odt"
- que cela a fonctionné.
Leçon apprise: pour changer le cas j'aurais dû plutôt faire:
git rename "final report.odt" temp.odt
git rename temp.odt "Final Report.odt"
Encore une fois, ce n’était pas le problème du PO ici; et n'affecterait pas un utilisateur Linux, comme le montrent ses publications, il est clairement. Je ne fais que l'inclure pour les autres personnes qui pourraient avoir ce problème dans Windows git et tomber sur cette question.
Si votre fichier idea/workspace.xml
est ajouté à .gitignore (ou à son dossier parent), vous devez add
manuellement pour git le contrôle de version. Aussi, vous pouvez l'ajouter en utilisant TortoiseGit. Après le prochain Push, vous verrez que votre problème est résolu.
Personnellement, je suis tombé sur un message d'erreur similaire dans ce scénario:
J'ai créé un dossier qui a été vide , donc naturellement tant qu'il est vide, taper git add *
ne prendra pas ce dossier en considération. Donc, quand j'ai essayé d'exécuter git rm -r *
ou simplement git rm my_empty_folder/ -r,
, j'ai eu ce message d'erreur.
La solution consiste simplement à le supprimer sans git: rm -r my_empty_folder/
ou à créer un fichier de données dans ce dossier, puis à l'ajouter (git add my_no_long_empty_folder
).
Dans mon cas, il y avait quelque chose de complètement étrange que je ne sois pas sûr de la cause. Un dossier entier a été validé précédemment. Je pouvais le voir dans Git, l'Explorateur Windows et GitHub, mais toutes les modifications que j'avais apportées au dossier et aux fichiers qu'il contenait étaient ignorées. Utiliser git check-ignore
pour voir ce qui était ignoré, et tenter de le supprimer à l'aide de git rm --cached
n'a eu aucun impact. Les changements n'ont pas pu être mis en scène.
Je l'ai corrigé par: