'GIT: error: pathspec 'xxx did not match any file(s) known to git
I have some trouble with a git repository of mine and I cant find the error :(
Thing is, I had this repository already in use for a PHP project. everything was fine. Then, I "added" composer to it. I.e., I copied the composer file to the repositorie's root, created a composer.json, and used "composer install". Hence, composer.lock and vendor/ were created for me.
Since I didnt want those to be included in the repo, I added the following to the .gitignore
composer
composer.lock
vendor/
Now, whenever I use "git add" oder "git commit" from the root, I will get the following errors:
$ git commit * -m "fixed issue #123"
error: pathspec 'composer' did not match any file(s) known to git.
error: pathspec 'composer.lock' did not match any file(s) known to git.
error: pathspec 'vendor' did not match any file(s) known to git.
Obviously, the commit (or add) does not work so I have to manually specify files to add or commit. Bummer.
I cannot find the problem :( Anyone knows how to fix this?
BTW I am using git version 2.4.9 (Apple Git-60)
Solution 1:[1]
Well, years passed, new git versions were released, yet the problem still show up for me from time to time. The posted fixes unfortunately do not help. Yet, instead of committing with git commit . -m "xyz" doing a
git commit -a -m "xyz"
does wonders.
Cheers.
Solution 2:[2]
I often have this problem if something has changed, added files to gitignore or something else. Maybe you have to rebuild the index.
Updated: added recursive and file param to git rm
In my case this worked:
remove cached files (only the paths are removed from the index, not the real files!!!)
git rm -r --cached .
add all files to the index
git add .
commit
git commit -m "hopefully fixed pathspec error"
UPDATE: If this won't work, try the following:
- Get a new checkout from your repo
- remove
composer, composer.lock, vendor/from your .gitignore - run the above suggestion again
- move the folders
composer, composer.lock, vendor/outside your repo - add and commit, maybe add with
-Ato add that the files are deleted - add
composer, composer.lock, vendor/to your .gitignore and commit - move back the folders
composer, composer.lock, vendor/to your repo
Now it should be gone from the repo and due to your .gitignore, never will be commited again. Hopefully the pathspec error is gone :)
Solution 3:[3]
I got this issue due to how many levels deep (length) my folders were. The path name was too long and git couldn't handle it, so I took the folder and threw it on my C: and everything started working fine. Check to see if your folder structure is too long. Ex:
C:/folder1/folder2/folder3/..../folder99/file.txt
above is too long, try to make it much shorter.
Something like C:/folder1/folder2/file.txt (For all files in the repo) and this should fix the issue.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Xenonite |
| Solution 2 | |
| Solution 3 | shivlal kumavat |
