web-dev-qa-db-fra.com

impossible de supprimer un fichier qui existe vraiment - fatal: pathspec ... ne correspond à aucun fichier

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!

130
Matthew Cornell

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
110
Boris Brodski
$>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.

17
gnganpath

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.

5
codingatty

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.

Add to git versioning using TortoiseGit

2
Lord Nighton

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).

0
Billal Begueradj

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: 

  1. Faire une copie du dossier et des fichiers dans un autre emplacement.
  2. J'ai supprimé l'original qui était en train d'être ignoré.
  3. Commit et Push cette mise à jour. 
  4. Enfin, j'ai ajouté les fichiers et le dossier en arrière et git y voyait et réagissait comme prévu.
  5. Mettez en scène et commettez ceci, et vous êtes prêt à partir! :)
0
Will Strohl