18

I have a working git repository containing several submodules (obtained by cloning different repositories).

Now, I want to copy the whole repository (with all the submodules) to a bare git repo on a different machine by either using pushing or cloning. I'm fine loosing the history of the submodules (I'm just interested in keeping their content).

Is this possible ? In my attempts, in the cloned repository the submodule directory is empty.

P.S. I know that this is not the correct workflow (see creating a public repo with submodules), however there is no possibility of updating the original submodule.

Community
  • 1
  • 1
Claudio
  • 10,614
  • 4
  • 31
  • 71

2 Answers2

27

You can clone the git repo with all submodule using recursive as follow:

git clone --recursive your-repo-url

on the other hand if you have already cloned, you can use:

git submodule init
git submodule update

You won't lose any history in your submodule

3

in the cloned repository the submodule directory is empty.

If, by "cloned repo", you are referring to the bare repo, it is normal: a bare repo is always empty.

If you are alluding to a clone of the bare repo, you need to add:

git submodule update --init --recursive

That way, you will see the content of those submodules.


Remember, a submodule is:

So all you need to do is clone that repo (even with a --recursive option), and the submodules will follow.

Community
  • 1
  • 1
VonC
  • 1,262,500
  • 529
  • 4,410
  • 5,250