git submodule init does absolutely nothing

I have a strange problem with “git submodule init”

When I added the submodules using “git submodule add url location” it cloned the repository just fine and everything was ok.

  • git gui using diff -b as difftool
  • how to handle this git rebase issue?
  • How to have vagrant/chef push a local git repo to a server
  • How to run bash script after git push
  • How to use Sonar SCM support with a workspace root that is not a Git repository
  • Force current commit to tip of branch
  • When I pushed all my changes back to the parent repository, added the .gitmodules files, etc and cloned the repository back, I tried to initialise all the submodules using “git submodule init”

    And nothing happens 🙁 Literally nothing, no output, no extra files, it does not even attempt to do anything actually.

    So I am wondering, what did I do wrong?

    .gitmodules:

    bash$ cat .gitmodules
    [submodule "projects/subprojectA"]
        path = projects/subprojectA
        url = ssh://user@bitbucket.company.com/test/projectA.git
    
    [submodule "projects/subprojectB"]
        path = projects/subprojectB
        url = ssh://user@bitbucket.company.com/test/projectB.git
    

  • How to get all authors for current state of git?
  • Git post-merge hook, how to get name of merged branch
  • Credentials issue on Windows slave node fetching from Git repo
  • Does git svn support svn:needs-lock?
  • How to list git submodules that have not been pushed to origin?
  • How can always ignore a file while merge
  • 2 Solutions collect form web for “git submodule init does absolutely nothing”

    ok, I have figured out what I did wrong.

    When I added the git submodules, I did a git status and it told me three things had changed

    .gitmodules
    projects/subprojectA
    projects/subprojectB
    

    when I was pushing all my changes to the repository, I didnt want to commit the submodules, cause I thought it would add all the files I just cloned, so I just did a git add .gitmodules and committed and pushed that.

    But this is wrong, you need to do a git commit and commit everything it tells you, then when you do this, git registers those paths and when you clone, it will work.

    but if you do not commit those folders, it wont register them and wont clone them when you clone the parent repository.

    so that was my mistake, I misunderstood that adding those directories would add all the submodules code to the parent repository, I tried to sidestep that and it stopped working.

    so just add your submodules and commit the results, it will all work out just fine 😀

    Thanks for Protectators help, regardless!

    Use the --recursive option when cloning. This option initializes all listed submodules :

    git clone --recursive
    

    In another case, if you want to initialize submodules of an git you just cloned, you can use

    git submodule update --init --recursive
    
    Git Baby is a git and github fan, let's start git clone.