48

I am sitting on a proxy which only allows http/https traffic only, I am able to clone a repository from Github, but I have to fetch/push using the https URL and username/password.

Now my issues is a repository with submodules, when I execute git submodule update it times out, and I can only assume this is because it's using an SSH connection which is blocked. (it doesn't even ask me for a password on private repos)

Dunhamzzz
  • 14,682
  • 4
  • 50
  • 74

3 Answers3

81
  1. Edit your .gitmodules file to use the HTTPS URL.
  2. Run git submodule sync to reflect the change to your .git/config file.
  3. Run the update command again.
  4. Commit and push the changes in your .gitmodules file.

Example .gitmodules file:

[submodule "vendor/engines/fat_free_crm"]
    path = vendor/engines/fat_free_crm
    url = https://github.com/fatfreecrm/fat_free_crm.git

Credits: https://stackoverflow.com/a/6632693/1273077

ADTC
  • 8,999
  • 5
  • 68
  • 93
fkoessler
  • 6,932
  • 11
  • 60
  • 92
  • My `.gitmodules` already has `https://github.com/` at the start and `.git` at the end, but when running `git submodule update --init` it still tries to run over SSH, since it says "Host key verification failed", and `fatal: clone of 'git@github.com:`. This is a public repo so I just want to use HTTPS but it keeps trying to use SSH. – Aaron Franke Jul 20 '23 at 05:33
47

In your .gitmodules file in the root of your repo, and in the .git/config file, you should find a section for your submodule. You can edit the url there so it is accessed via https request rather ssh.

Of course it may already be an ssh url, in which case the problem may be something else, but this is the first place to check.

Alex Wilson
  • 6,690
  • 27
  • 44
  • This was very helpful but my problem was slightly more complex in that I had subrepos inside subrepos. Here is how I got all the correct files edited in Linux: sed -i -e 's/git:\/\//http:\/\//g' .gitmodules; find . -name config -type f -exec sed -i -e 's/git:\/\//http:\/\//g' {} \; – Tristan Jun 04 '15 at 16:02
  • 22
    Running ``git submodule sync`` after editing ``.gitmodules``, as François Koessler's answer suggests, is a necessary step for this to work! – Giorgos Sfikas Mar 05 '18 at 16:35
  • I hadn't read your comment. I had to manually change the `.git/config` file – Nagabhushan S N Sep 03 '20 at 14:44
4

If you don't want to manually change the .gitmodules file yourself, you can do it with git CLI now (make sure your git version is not too old).

This will make the changes for you:

git submodule  set-url [--] <path> <newurl>

Example:

git submodule set-url somedir https://github.com/somename/somerepo.git
trex
  • 325
  • 3
  • 8