Почему добавление существующего репо в качестве подмодуля изменяет .git / config?

Если я добавлю подмодуль, который в настоящее время не существует, информация о подмодуле не будет добавлена ​​в .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

Однако, если я добавлю репо, которое в настоящее время существует в качестве подмодуля 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

Я бы предположил, что в обоих случаях подмодуль git add изменил бы только .gitmodules , и что подмодуль git init обновил бы .git / config проекта.

Почему .git / config изменен во втором случае, а не в первом? Может ли кто-нибудь объяснить причину такого поведения?

6
задан cdwilson 21 May 2011 в 17:36
поделиться