Basically my problem is that I can't make git understand that ~/main-project/submodule
is a submodule.
I have good experience with git submodules:
in my dotfiles repository I created the .gitmodules file in ~/dotfiles-repo
and I added there paths and urls. Since then, If I make changes to the files within the submodules and run git status
, I'd get something like like: .vim/bundle/auto-complete (new commits) # in red
I created the .gitmodules
file in ~/main-project
but:
~/main-project/submodule
and even push the changes, I don't get a similar response like <submodule> (new commits) # in red
when running git status
in ~/main-project
. I just get the changes that were made in those directoriesWhen I hit the folders' links at github
for these directories it's not directing me to the repositories themselves but I stay in the same repository.
~/main-project/submodule
to the index?I've read this question which led me to this answer But I'm not sure I need git-subtree
. I don't want to do things that might do changes hard to be revert.
Edit: This suggested duplicate-solution didn't work either, I recieved an error that
Updates were rejected because the remote contains work that you do not have locally
. It seems that @GabLeRoux practically told me to push<repo-A>
to the url of<repo-B>
.
git submodule absorbgitdirs
This is what the docs state this command does:
If a git directory of a submodule is inside the submodule, move the git directory of the submodule into its superprojects
$GIT_DIR/modules
path and then connect the git directory and its working directory by setting thecore.worktree
and adding a .git file pointing to the git directory embedded in the superprojects git directory.
So instead of starting all over as suggested in the previous answers by @DomQ and myself, one can just add run the following:
.gitmodules
and to .git/config
withgit submodule add <url> <path>
$GIT_DIR
directory (.git
in regular repositories) to .git/modules/<path>
withgit submodule absorbgitdirs <path>
git submodule absorbgitdirs
was introduced only in v2.12.0-rc0 (see commit).
The Solution is quite simple. It was extracted from here.
git rm submodule-dir
submodule-dir
rm -rf submoduledir
submodule-dir
because git ignored them.git commit
submodul-dir
.
Now it's time to do:git submodule add <remote-path-to-submodule>
.gitmodules
and see if the submodules have been added successfully. In my case I already had an .gitmodules
file so I had to modify it.