为什么将现有的repo添加为子模块会修改.git/config?

cdw*_*son 6 git add git-submodules

如果我添加一个当前不存在的子模块,则不会添加任何子模块信息.git/config.

$ mkdir testing
$ cd testing
$ git init
$ git submodule add git@git.server:submodule.git
$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
Run Code Online (Sandbox Code Playgroud)

但是,如果我添加一个当前作为子模块存在的仓库,则该URL将添加到.git/config:

$ mkdir testing
$ cd testing
$ git init
$ git clone git@git.server:submodule.git
$ git submodule add git@git.server:submodule.git
$ cat .git/config 
[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
[submodule "submodule"]
    url = git@git.server:submodule.git
Run Code Online (Sandbox Code Playgroud)

我会假设在这两种情况下,git submodule add只会修改.gitmodules,而且git submodule init会更新项目.git/config.

为什么.git/config在第二种情况下修改而不是第一种情况?有人可以解释这种行为的理性吗?