Ответ 1
Нет, вам не нужно добавлять свой подмодуль в .gitignore
: родитель увидит из вашего подмодуля gitlink (специальная запись , mode 160000
).
Это означает, что любое изменение, непосредственно сделанное в подмодуле, должно сопровождаться фиксацией в родительском каталоге.
Таким образом, родительский каталог будет записывать правильную фиксацию для состояния подмодуля: эта фиксация является упомянутой выше "gitlink";
Вы можете прочитать больше об этой политике в "git submodule update (истинная природа подмодулей)".
Основная идея подмодулей - это компонентный подход, где вы ссылаетесь на другие репозитории при определенных фиксациях. Но если вы что-то измените в этих подмодулях, вам также необходимо обновить эти ссылки в родительском репо.
Обратите внимание, что в Git 2.13 (Q2 2017), не игнорируя gitlink, вы все равно можете игнорировать подмодуль с помощью:
git config submodule.<name>.active false
Подробнее см. в разделе "Игнорировать новые коммиты для подмодуля git".
Примечание: в Git 2.15.x/2.16 (Q1 2018) игнорирование подмодуля является более точным.
"git status --ignored --untracked
" не остановился на рабочем дереве отдельного проекта, который встроен в игнорируемый каталог и перечислил файлы в этом другом проекте, вместо того, чтобы просто показывать сам каталог как проигнорированный.
См. коммит fadb482 (25 октября 2017 г.), автор Йоханнес Шинделин (dscho
).
(Merged by Junio C Hamano -- [TG45] -- in commit da7996a, 06 Nov 2017)
status
: не путайте субмодули в исключенных каталогахМы тщательно передаем флаг
exclude
функцииtreat_directory()
, чтобы мы могли указать, что файлы в нем исключены, а не отслежены при повторном обращении.Но мы еще не относились к подмодулям одинаково.
Из-за этого
git status --ignored --untracked
с субмодулемsubmodule
в gitignoredtracked/
покажет субмодуль в разделUntracked files
, например
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
tracked/submodule/
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/initial.t
Вместо этого мы бы хотели, чтобы он отображал субмодуль в "
Ignored files
" Раздел:
On branch master
Ignored files:
(use "git add -f <file>..." to include in what will be committed)
tracked/submodule/