impossible de supprimer le fichier qui existe réellement - 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:
$ 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'à présent, j'ai essayé rm depuis le répertoire, et je m'échappe juste au cas où il y aurait des personnages amusants, et je suis vraiment perplexe. J'ai cherché sur le Web et SO mais je n'ai pas trouvé cela 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
METTRE À JOUR: Les réponses de Nevik et Boris ont beaucoup aidé. J'ai réalisé que j'étais confus par un certain nombre de choses qui se passaient, dont certaines étaient exacerbées par IntelliJ IDEA (un outil que j'aime généralement, BTW). Premièrement, le message 'fatal: pathspec' de git rm est à la fois inutile et trompeur (de l'avis de cet utilisateur vanilla). Deuxièmement, j'avais le fichier en .gitignore, mais je l'avais supprimé avant de poser ma question. Cependant, il a également été inclus dans la fonctionnalité Fichiers ignorés d'IDEA indépendamment de git, et affiché comme tel dans le visualiseur de projet (au lieu de non suivi, comme le montre l'état de git). Enfin, j'ai lancé IDEA pendant que j'expérimentais, et il semble qu'il recréait le fichier immédiatement après mon rm. Donc, ce que je retiens est que si j'obtiens un comportement confus de Git, assurez-vous de quitter IDEA et de travailler uniquement dans la ligne de commande (et gitk) pendant le débogage. Et que les utilisateurs SO sont géniaux. Merci encore!
la source
rm
au lieu degit rm
?git clean -f .idea/workspace.xml
pour supprimer le fichier non suivi.Réponses:
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é (en utilisant les fichiers .gitignore ou .git / info / exclude)Vous pouvez le vérifier à l'aide de la commande git suivante, qui répertorie tous les fichiers ignorés:
la source
Ça marche. Vous ajoutez un nouveau fichier en utilisant le clic droit -> créez un nouveau fichier et supprimez-le immédiatement après cela. Le fichier irait dans la liste des fichiers non suivis.
la source
rm
un répertoire ou d'un fichier, il / elle n'a pas besoin de l'ajouter à git s'il n'est pas déjà répertorié sous le contrôle de version de git.Je sais que ce n'est pas le problème de l'OP, mais j'ai rencontré la même erreur avec une base entièrement différente, donc je voulais juste 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 Linux.
J'avais un fichier doc LibreOffice, appelez-le
final report.odt
. J'ai plus tard changé son cas enFinal 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 les mêmes. Sous Linux, ils sont tous distincts.Quand je suis finalement allé
git rm "Final Report.odt"
et obtenu l'erreur "pathspec ne correspond à aucun fichier". Ce n'est que lorsque j'utilise le boîtier d'origine au moment où 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:
Encore une fois, ce n'était pas le problème pour le PO ici; et n'affecterait pas un utilisateur Linux, comme ses messages le montrent clairement. Je l'inclus juste pour ceux qui peuvent avoir ce problème dans Windows git et tomber sur cette question.
la source
Si votre fichier
idea/workspace.xml
est ajouté à .gitignore (ou à son dossier parent),add
il suffit de le faire manuellement pour git le contrôle de version. Vous pouvez également l'ajouter en utilisant TortoiseGit. Après la prochaine poussée, vous verrez que votre problème est résolu.la source
rm
un répertoire ou d'un fichier, il / elle n'a pas besoin de l'ajouter à git s'il n'est pas déjà listé sous git version control!Dans mon cas, il y avait quelque chose de complètement étrange dont je ne sais pas quelle était la cause. Un dossier entier a été précédemment validé. Je pouvais le voir dans Git, l'Explorateur Windows et GitHub, mais toutes les modifications que j'avais apportées au dossier lui-même et aux fichiers qu'il contenait étaient ignorées. Utiliser
git check-ignore
pour voir ce qui l'ignorait et tenter de le supprimer en utilisantgit rm --cached
n'a eu aucun impact. Les changements n'ont pas pu être mis en scène.Je l'ai réparé par:
la source
Personnellement, je suis tombé sur un message d'erreur similaire dans ce scénario:
J'ai créé un dossier qui était vide , donc naturellement tant qu'il est vide, la saisie
git add *
ne prendra pas en compte ce dossier vide. Donc, quand j'ai essayé de courirgit rm -r *
ou simplement de git,rm my_empty_folder/ -r,
j'ai reçu ce message d'erreur.La solution est de simplement le supprimer sans git:
rm -r my_empty_folder/
ou de créer un fichier de données dans ce dossier puis de l'ajouter (git add my_no_long_empty_folder
)la source
Ces étapes m'ont aidé:
la source
Déplacer temporairement .gitignore vers .gitignore.bck
la source