web-dev-qa-db-fra.com

Pourquoi ai-je le message "L'échec de la validation avec l'erreur: pathspec ... ne correspond à aucun fichier"?

J'ai des problèmes avec Git.

J'ai un référentiel où je peux valider n'importe quel fichier sans problème. Cependant, il existe un seul fichier 'Funder.php' qui, lorsque j'essaye de m'engager, m'indique qu'il y a une erreur telle que:

Commit failed with error:
pathspec 'application/libraries/Funder.php' did not match any file(s) known to git.

Je suis assez novice dans ce domaine, alors je me demandais si quelqu'un pouvait aider s'il vous plaît?

61
Dario

Ceci est l'erreur que vous obtenez lorsque vous essayez d'exécuter

git commit <file>

mais <file> n'a pas encore été mis en scène; En d'autres termes, Git n'en a pas encore été informé. C'est très probablement ce qui se passe ici. Courir

git add application/libraries/Funder.php

puis essayez de vous engager.

40
jubobs

La raison pour laquelle cette erreur se produit est indiquée dans ce message: https://stackoverflow.com/a/29485441/2769415

Le système de fichiers Windows est généralement insensible à la casse, vous ne pouvez donc pas renommer un fichier en changeant simplement sa capitalisation. Au lieu de cela, vous devrez utilisez un nom temporaire entre les deux.

Solution: Renommez le fichier par son nom d'origine, puis renommez-le sous un autre nom, puis revenez à celui qui contient la casse correcte. Git ne jettera plus le bogue.

Exemple:

Created FOOBar class.
Renamed it to FooBar and then got the error.
Rename it back to FOOBar.
Rename to FooBarTest.
Rename to FooBar.
Git works now.
52
Daniel Silva

J'ai eu le même problème dans Android Studio après avoir renommé certaines activités. J'ai essayé d'ajouter (git add) et de déplacer (git mv) les fichiers mais je n'ai jamais rien fait et je recevais le même message encore et encore.

Finalement, j'ai décidé de sauvegarder les classes du paquet contenant le fichier problématique dans un dossier séparé de mon disque dur, puis j'ai supprimé les fichiers du dossier d'origine et du terminal que j'ai fait:

rm app/src/main/Java/com/path/to/package/with/problematic/files/

Puis recréé le paquet supprimé via Android Studio et copié-collé mes classes là-bas. Après cela, j'ai pu m'engager sans aucun problème.

6
Oscar Salguero

Voici une réponse concise sur le moyen le plus rapide de résoudre ce problème. Semblable à @ cmbind55 post mais au point.

Problème: J'ai ajouté un fichier que j'ai renommé par la suite.

Solution:

  1. Annuler l'ajout de l'ancien nom de fichier

git reset HEAD oldFileName.file

  1. Maintenant, ajoutez le nouveau nom de fichier

git add newFileName.file

  1. S'engager et être heureux
5
Julian Soro

Ce scénario de validation a échoué en raison d’un répertoire renommé.

C'était le répertoire créé à l'origine avec une erreur de capitalisation:

application/Templates/lists/index.html

Au sein de l'EDI, j'avais accepté d'ajouter ce fichier au dépôt git existant . Lors d'essais ultérieurs, j'ai découvert que j'avais un problème de chemin sensible à la casse avec la capitalisation de "Modèles". Dans l'EDI, j'ai simplement renommé le répertoire "templates" (changé en minuscule). Je n'ai pas enregistré la séquence d'événements autour de cela, mais plus tard, lorsque ma validation a échoué avec le message suivant, j'avais l'intuition que c'était ce problème. Apparemment, IDE n'a pas complètement traité ce cas de renommage d'un répertoire.

Le message d'erreur de validation IDE: 

La validation a échoué avec l'erreur: pathspec "application/templates/lists/index.html" ne correspond à aucun fichier connu pour git.

Après quelques lectures, ma stratégie consistait à extraire le fichier, puis à l'ajouter à nouveau. J'ai décomposé le fichier suspect

git reset HEAD lists/Templates/lists/index.html

Note, le statut de git n'a montré que le répertoire ici ... Pas le fichier.

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    lists/templates/

Ensuite, j'ai rajouté avec le nom de répertoire corrigé (je n'ai utilisé que le chemin d'accès pour l'ajout, en suivant l'exemple du statut de git).

git add lists/templates/

Après cela, mon commit a réussi. Je ne sais pas si c'était la technique idéale, mais cela a résolu l'erreur de validation dans mon cas.

3
cmbind55

j'ai eu le même problème. il suffit de changer les "guillemets simples des commentaires initiaux" pour les guillemets doubles ""

3
Trilochan

si vous travaillez depuis un terminal, assurez-vous que vous avez un indicateur de message dans votre commande. 

git commit "Your Commit Message" //Throws an error: pathspec '3.

git commit -m "Your Commit Message" //No error thrown

2

iOS 9.2.1, Xcode 7.2.1, ARC activé

Couru dans cela en changeant le fichier "contents.json" pour mon catalogue d'actifs LaunchImage. Vous pouvez choisir d'utiliser les commandes de terminal fournies comme réponse, mais essayez cette méthode plus simple ...

Contrôle de la source -> Actualiser le statut

 enter image description here

J'espère que cela t'aides. À votre santé!

2
serge-k

J'ai eu un problème similaire mais résolu. J'aurais dû utiliser "" au lieu de '' en ligne de commande Windows

2
alaboudi

J'ai eu le même problème. Aucune des réponses ici ne m'a pas aidé à résoudre le problème. Après être resté bloqué pendant deux jours, j’ai attiré l’attention sur le fait que le nom de fichier entier avec chemin est très long. J'ai refactorisé en le renommant en quelque chose de moins compliqué et en réorganisant les dossiers afin de réduire la longueur du nom de fichier et cela a fonctionné!

2

j'ai eu le même problème avec le mot "certificat" en tant que nom de paquet ... quand je renomme le paquet en "certificats" ça fonctionne ... étrange .. 

1
HowardS

J'ai eu le même problème avec le fichier '.entitlements', supprimer le fichier existant et l'ajouter à nouveau a fonctionné pour moi.

0
R.S.

J'ai eu la même erreur. Je transmettais le message de validation dans le cadre de l'argument de ligne de commande. Le message de validation que je passais avec des guillemets doubles.

Dans git commit, j'utilisais de nouveau les guillemets. Cela jetait la même erreur.

J'ai donc supprimé les guillemets du message de validation tout en appelant git commit. Cela a résolu mes problèmes.

git commit -m "%commit_message%"

La commande ci-dessus lançait la même erreur

Je l'ai changé pour 

git commit -m %commit_message%

Cela a résolu mon problème.

0
Anup Ghosh

J'ai expérimenté cela en créant par erreur la branche dans un autre référentiel sur BitBucket. Assurez-vous donc que vous êtes dans le bon référentiel et que la branche existe.

0
PWM

J'ai eu un problème similaire lors de la validation de fichiers supprimés avec SourceTree sous Mac. Un des fichiers problématiques avait des accents (áéíóú ...). Pour le résoudre, je devais utiliser un terminal plutôt que SourceTree

0
xleon

Mon problème était que je copiais/collais toute la ligne de validation et que celle-ci avait des caractères spéciaux, qui semblaient être des caractères normaux dans la console (ex: guillemets intelligents au lieu de guillemets normaux). Une fois que je les ai collés dans un éditeur de texte brut, je les ai vus, corrigés et tout a fonctionné.

0
NightShovel

Dans mon cas, le fichier problématique a été marqué avec --skip-worktree. Cela pourrait être facilement vérifié avec

git ls-files -v . | grep ^S
0
montonero

Avec XCode 7.3, j'ai renommé le fichier en question en FooBar.foo.tmp, puis je l'ai validé une fois que XCode/git a ajouté ce nouveau fichier et défini l'ancien fichier à supprimer. Une fois que je me suis engagé, je l'ai renommé (dans XCode). Maintenant ça va. C'est la vie. 

0
Robert Wasmann