Git: fatal: Pathspec is in submodule
I wanted to make a subdirectory stop being a git submodule. This worked for me:
$ mv subdir subdir2
$ git rm --cached subdir
$ mv subdir2 subdir
It seems the git add
context is the parent repo ("parent" means the one including the submodule), which triggers the warning.
Try and change its context with:
cd _site
git --git-dir=.git --work-tree=. add .
git --git-dir=.git --work-tree=. commit -m "new files"
Don't forget that, if this works, you would still have to go back to the parent repo, and git add _site
, since the subrepo would have changes.
And you would have to push both.
Update January 2017 (2+ years later)
With Git 2.12, you won't see that prefix_pathspec: Assertion
anymore.
See commit 2d81c48 (09 Jan 2017) by Stefan Beller (stefanbeller
).
Helped-by: Jeff King (peff
), and Junio C Hamano (gitster
).
(Merged by Junio C Hamano -- gitster
-- in commit 00880a1, 18 Jan 2017)
pathspec
: give better message for submodule relatedpathspec
errorRunning "
git add a/b
" when "a
" is a submodule correctly errored out, but without a meaningful error message.
Removing the directory from git and adding it again worked for me:
git rm --cached directory
git add directory
This works if you purposefully removed the .git
directory because you wanted to add directory
to your main git project. In my specific case, I had git cloned an extension and ran git add .
without thinking too much. Git decided to create a submodule, which I didn't like. So I removed directory/.git
and ran into Git: fatal: Pathspec is in submodule
. I couldn't find out how to remove the submodule stuff. Fixed with the two lines above.