Reputation: 2433
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
Upvotes: 35
Views: 39477
Reputation: 1934
If you have otherwise completely removed a submodule, and are trying to add it back in again, but you're getting an error that it already exists in the index......
git update-index --remove path_to_submodule
...to remove it from the index. You should then be able to add the submodule again.
Upvotes: 0
Reputation: 11
this is because you have the folder in your repo same name as the name of your submodule
$ git rm -r subModuleName
$ git submodule add "your submodule repo path without these quotes"
Try again adding the submodule
Upvotes: 1
Reputation: 597
'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://[email protected] submodules/uasdk-clib
Upvotes: 1
Reputation: 2472
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
Upvotes: 14
Reputation: 6294
May occur, when merging with error, manual deleting of folder of submodule, or something else, like Hallileo Comet
in file .gitmodules
- delete links to submodule (whole section with submodule name)
in file .git\config
- delete links to submodule, as in previous step
in folder .git\modules
- delete folder with relative path similar to relative path of "problem" module
ensure, that folder of submodule is not exists anymore
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
Upvotes: 4
Reputation: 1326784
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 [email protected]: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 [email protected]: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.
Upvotes: 73