Разница между .gitmodules и заданием подмодулей в .git/config?

Наверное, очень глупый вопрос, - но я до сих пор указывал подмодули в файле .gitmodules. Недавно мне показалось, что, возможно, возможно просто использовать .git/config по той же причине, поэтому мне не нужно будет хранить посторонний файл в рабочем каталоге?

.git/config:

[submodule "path/to/repo"]
    url = [email protected]:username/repo.git

.gitmodules

[submodule "path/to/repo"]
    path = path/to/repo
    url = [email protected]:username/repo.git

Это в основном одни и те же вещи?

Ответ 1

Тот же ответ, что .git/info/exclude и .gitignore.

Файл .gitmodules может быть включен в репозиторий и доступен всем (то есть, он может быть добавлен и зафиксирован как любой обычный файл), тогда как все, что находится в .git (например, .git/config), является приватным (вы не может добавить его в репозиторий).

Ответ 2

git submodule sync обновит ваш файл конфигурации с помощью данных из файла .gitmodules, поэтому последний должен считаться "хозяином" - он передается между репозициями, указанными в @Artefact2.

Это полезно, когда URL-адреса субмодулей меняются вверх по течению, и вам нужно соответственно, обновите локальные репозитории.