Git

Add Git Submodule to a Local Repos Url

I was adding a submodule which is local.

I didn’t push to a remote because it is not necessary for my project. It is just some data files that I wanted to track the changes locally. Yet, I require it in the main project repository.

A supposedly simple operation, but I met with some problem.

Problem

I use sourcetree app to add the submodule. On my first try, somehow I select the folders wrongly.

After a few tries, I figured out the source path and relative path in sourcetree..

But when I add, I keep getting the error:

pathspec 'mysub' did not match any file(s) known to git

Switch to command line

Whenever sourcetree fails me, I switch to the command line.

I deleted .gitmodules and the mysub directory (the relative directory in my main project that I want my submodule to be in).

Then I run:

git submodule add /path/to/submodule mysub

It complained:

A git directory for 'mysub' is found locally with remote(s):
origin  /path/to/submodule

I used the --force options, and it gave me:

fatal: You are on a branch yet to be born

Solution

After wasting 20 minutes, I found a solution on StackOverlfow with more than 100 upvotes.

I have to delete .git/modules/mysub because when I was using sourcetree, on my first try, the URL/path was specified wrongly.

A silly mistake.

But looks like I am not the only one.

Comments