Git Submodules. Pulling into a new clone of the super-project
OK. So I thought I had this licked ... but now ....
I have a project which includes one small library from GitHub as a submodule. In the original version of that super-project the submodule is working as expected.
However, I just cloned the superproject, did what I thought I should : "git submodule init", got the directory of the submodule to appear, but it's empty.
If I now try to do
git submodule update
I get
fatal: Needed a single revision
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'
If I try
git submodule foreach git pull
I get
Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.
In my .git/config, I have this :
[submodule "external_libraries/BEACHhtml"]
url = [email protected]:interstar/BEACHhtml.git
In my .gitmodules I have this :
[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = [email protected]:interstar/BEACHhtml.git
Anyone got an idea what's missing?
Solution 1:
It seems that now (in 2019) installing latest GIT client could solve the problem according to comments below. This should be the best solution for now.
I have the same problem as you. This is a bug in git: http://git.661346.n2.nabble.com/BUG-git-submodule-update-is-not-fail-safe-td7574168.html
In short, for your problem, try:
# rm -rf external_libraries/BEACHhtml
# git submodule update
It seems there is something wrong with the previous checkout folder, remove it, and update again solves the problem.
Solution 2:
Solved by deleting 2 directories and refetching submodule:
- Go to
external_libraries/BEACHhtml
and look into.git
file. It's content should be something likegitdir: ../../.git/modules/external_libraries/BEACHhtml
- Delete both
external_libraries/BEACHhtml
and.git/modules/external_libraries/BEACHhtml
directories.
From now on git submodule update
runs without errors.