Git submodule add: “a git directory is found locally” issue

I’m actually trying to learn how to use git, including the “git submodule” subcommands.
I already set up a server on which I can host, push and pull git repositories by using ssh.
I created on this server a main git repository “Travail” in wich I would like to put all my projects as submodules.

In my Travail repository, I already added a project of mine as a submodule at tools/libft :
I’m able to develop this submodule, to push and to pull it.

  • How do I get TeamCity to Merge master into Pull Request before each build?
  • New repo with copied history of only currently tracked files
  • Can't push github project to azure with git
  • pushing to github from work “Bad file number” error
  • Turnkey Revision Control appliance: git push is not working for git:// protocol
  • Can I save the changes of my some old commit, gotten via `git checkout`?
  • But when I try to add an other submodule (named fdf, from fdf.git on my server), I get the following issue :

    git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf
    
    A git directory for 'projets/fdf' is found locally with remote(s):
      origin    ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git
    If you want to reuse this local git directory instead of cloning again from
      ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git
    use the '--force' option. If the local git directory is not the correct repo 
    or you are unsure what this means choose another name with the '--name' option.
    

    There is actually no subdirectory in projets/

    I read on an other thread that I should use git submodule sync or edit the .gitmodules file in which the URL to my submodule’s origin repository could have changed.

    But my .gitmodules file only contains the information about my first submodule (tools/libft), not about projets/fdf :

    [submodule "tools/libft"]
        path = tools/libft
        url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git
    

    As a French student I could have missed something in the english documentation I have, but I searched and I really don’t understand why I get this issue.

    I would be glad if I would get a solution but just an explanation would be helpful too.

  • Bundler for javascript, or how to source control external javascript files
  • Git Command for a custom purpose
  • Find added files in index before an initial commit is made
  • git log --quiet is not quiet
  • Errors when moving a specific commit to a new branch with Git
  • How do I force “git pull” to overwrite local files?
  • 4 Solutions collect form web for “Git submodule add: “a git directory is found locally” issue”

    I came to this SO post trying to add a submodule with the same path as a submodule that I recently deleted.

    This is what ultimately worked for me (this article helped out a lot):

    If you haven’t already run git rm –-cached path_to_submodule (no trailing slash) as well as rm -rf path_to_submodule, do that!

    Then:

    1. Delete the relevant lines from the .gitmodules file. e.g. delete these:

      [submodule "path_to_submodule"]
      path = path_to_submodule
      url = https://github.com/path_to_submodule

    2. Delete the relevant section from .git/config. e.g. delete these:

      [submodule "path_to_submodule"]
      url = https://github.com/path_to_submodule

    3. rm -rf .git/modules/path_to_submodule

    Then, you can finally:

    git submodule add https://github.com/path_to_submodule

    You may have deleted your 'projets/fdf' from disk, but your Git repository still has it. Use git rm -rf projets/fdf to remove it from Git, then commit the changes. After that you’ll be able to add this folder as a submodule.

    i tried jbmilgrom’s solution, specifically i tried git rm --cache and that didn’t work for me either as the directory/submodule wasn’t there. What worked for me was:

    1. rm -rf .git/modules/blah
    2. git submodule add git://path.to.new

    I did this after trying --force within the git submodule commands and rm all the other directories, pushes to master etc… the directory didn’t exist and there was no reason for the cache. Turns out in .git/modules that is where this error was lying.

    If you already deleted the submodule directory, like I did, follow the rest of jbmilgrom’s instructions. The key is rm -rf .git/modules/path_to_submodule but go ahead and backup your whole parent repo directory first.

    If you only had one submodule just delete .gitmodules

    Git Baby is a git and github fan, let's start git clone.