threads / discuss / 48725

need for `git submodule update` over `git pull --recurse-submodules`?

Subject: need for `git submodule update` over `git pull --recurse-submodules`?

## tl;dr

2 messages between Jun 18, 2018 and Jun 18, 2018.

replies: 1people: 2as markdown or json

Shriramana Sharma· Jun 18, 2018, 03:41 UTC · lore
Hello.

I've read [this similar question on superuser](https://superuser.com/questions/852019/git-submodule-foreach-git-pull-origin-master-vs-git-pull-recursive-submodules) but I feel my question is more basic:

From the `git pull` manpage:
    git pull runs git fetch with the given parameters and calls git
merge to merge the retrieved branch heads into the current branch.
    ...
    --[no-]recurse-submodules[=yes|on-demand|no]
    This option controls if new commits of all populated submodules
should be fetched and updated, too.

To keep a cloned repo without submodules up to date I have been using just `git pull`. From the above it seems that I just need to add `--recurse-submodules` to pull all submodules as well.

But if so what is the use of `git submodule update --recursive` or `git submodule update --remote --rebase` or such, which is somewhat confusing to me I'm sorry to say.

Do I need to execute any `git submodule` commands separately even if I do `git pull --recurse-submodules`? All I want is to stay in sync with the cloned repo.

-- 
Shriramana Sharma ஶ்ரீரமணஶர்மா श्रीरमणशर्मा 𑀰𑁆𑀭𑀻𑀭𑀫𑀡𑀰𑀭𑁆𑀫𑀸
Stefan Beller· Jun 18, 2018, 17:44 UTC · re: Shriramana Sharma · lore

Re: need for `git submodule update` over `git pull --recurse-submodules`?

On Sun, Jun 17, 2018 at 8:41 PM Shriramana Sharma <samjnaa@gmail.com> wrote:
> Do I need to execute any `git submodule` commands separately even if I
> do `git pull --recurse-submodules`?

Ideally you don't need "git submodule" commands any more, the rest of git is slowly converging to have builtin submodule functionality.

> All I want is to stay in sync with
> the cloned repo.
That should just work with "pull --recurse"
> But if so what is the use of `git submodule update --recursive` or
> `git submodule update --remote --rebase` or such, which is somewhat
> confusing to me I'm sorry to say.

The git-submodule command was the first command implemented that dealt with submodules. In the beginning there was no "git pull --recurse" but the only way was to run "git submodule update" to change the state of submodules. Now there are better ways to do that, such as the recursive pull.

Hope that helps, Stefan

← back to recent threads