Add a submodule which can't be removed from the index

I'm trying to add a submodule that already existed (different git remote repository). As I didn't searched before how to do it correctly, I think I've messed up my repository and I need some help to fix it again.

I've already deleted all the relevant sections from the .gitmodules and .git/config regarding the submodules I want to delete. I've also verified that there is not modules directory inside my .git/ directory.

However, when I run the command git rm --cached path_to_submodule, the following message is displayed:

fatal: pathspec 'path_to_submodule' did not match any files

As the previous command fails, when I try to add again the same submodule with the new definitions, running the command git submodule add gituser@host:repo.git, this is the displayed message:

'repo' already exists in the index

Answers


The only way that message ('repo' already exists in the index) can be displayed is if 'repo' still exists in the index (see this chapter on submodule):

$ rm -Rf rack/
$ git submodule add git@github.com:schacon/rack.git rack
'rack' already exists in the index

You have to unstage the rack directory first. Then you can add the submodule:

$ git rm -r rack
$ git submodule add git@github.com:schacon/rack.git rack

Even if 'rack' isn't a submodule, if it exists, it would prevent the declaration of a submodule of the same name.


If the output adding a new submodule is:

'FolderName' already exists in the index

Tip the next commands

git ls-files --stage 

The output will be something similar to:

160000 d023657a21c1bf05d0eeaac6218eb5cca8520d16  0  FolderName

Then, to remove the folder index tip:

git rm -r --cached FolderName

Try again add the submodule


May occur, when merging with error, manual deleting of folder of submodule, or something else, like Hallileo Comet

  1. in file .gitmodules - delete links to submodule (whole section with submodule name)

  2. in file .git\config - delete links to submodule, as in previous step

  3. in folder .git\modules - delete folder with relative path similar to relative path of "problem" module

  4. ensure, that folder of submodule is not exists anymore

  5. then:

    $ git submodule add -f --name <name> <git://path_1.git> <path_2>

    where: name - name of submodule as u wish, may be equal your repo name; - path to submodule source repo (ie - github, etc), - relative path to folder where submodule will reside

    this lets u to add submodule within path or with name which still present in index, but not naturally alive.

i didn't found any method to remove these dead links from index, but when forced


'submodules/uasdk-clib' already exists in the index

git rm -r --cached submodules/uasdk-clib

git submodule add -b china/release/16.8.0 -f ssh://git@xxx-ios-uasdk.git submodules/uasdk-clib


Need Your Help

Rails belongs_to_many

ruby-on-rails activerecord associations

I'm a beginner in Rails and I have a problem with ActiveRecords associations.

Client notification, should I use an AJAX Push or Poll?

javascript ajax web-services server-push

I am working on a simple notification service that will be used to deliver messages to the users surfing a website. The notifications do not have to be sent in real time but it might be a better user