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

2 messages from 2018-06-18 to 2018-06-18. Participants: Shriramana Sharma, Stefan Beller.
Thread: https://gitlist.dev/t/48725

## Shriramana Sharma, 2018-06-18 03:41

Subject: need for `git submodule update` over `git pull --recurse-submodules`?
Message-ID: <CAH-HCWW2xUqO9HNfzaduXbn1PnwWinVJcTh9AG3Ubmq0LtAQLg@mail.gmail.com>
URL: https://gitlist.dev/e/CAH-HCWW2xUqO9HNfzaduXbn1PnwWinVJcTh9AG3Ubmq0LtAQLg%40mail.gmail.com

```
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, 2018-06-18 17:44

Subject: Re: need for `git submodule update` over `git pull --recurse-submodules`?
Message-ID: <CAGZ79kakxmiePTybKbdgqGhgboeWFJeN4pmGHbqNorHYmf9QvQ@mail.gmail.com>
URL: https://gitlist.dev/e/CAGZ79kakxmiePTybKbdgqGhgboeWFJeN4pmGHbqNorHYmf9QvQ%40mail.gmail.com
In-Reply-To: <CAH-HCWW2xUqO9HNfzaduXbn1PnwWinVJcTh9AG3Ubmq0LtAQLg@mail.gmail.com>

```
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

```
