Нет, вам не нужно добавлять свой подмодуль в ваш .gitignore
: то, что родитель будет видеть из вашего подмодуля, - это gitlink ( специальная записьmode 160000
).
Это означает: любое изменение, непосредственно сделанное в подмодуле, должно сопровождаться фиксацией в родительском каталоге.
Таким образом, родительский каталог будет записывать правильную фиксацию для состояния подмодуля: эта фиксация - это «gitlink», упомянутый выше;
Вы можете узнать больше об этой политике в « git submodule update (истинная природа подмодулей) ».
Основная идея подмодулей - это компонентный подход , когда вы ссылаетесь на другие репозитории в конкретных коммитах. Но если вы что-то измените в этих подмодулях, вам также необходимо обновить эти ссылки в родительском репо.
Обратите внимание, что с Git 2.13 (второй квартал 2017 г.), не игнорируя gitlink, вы все равно можете игнорировать подмодуль с помощью:
git config submodule.<name>.active false
См. Больше в « Игнорировать новые коммиты для подмодуля git ».
Примечание: с Git 2.15.x / 2.16 (Q1 2018) игнорирование подмодуля является более точным.
" git status --ignored --untracked
" не остановился на рабочем дереве отдельного проекта, который встроен в игнорируемый каталог и перечисляет файлы в этом другом проекте, вместо того, чтобы просто показать сам каталог как игнорируемый.
См. Commit fadb482 (25 октября 2017 г.) Йоханнеса Шинделина ( dscho
) .
(Объединено Junio C Hamano - gitster
- в commit da7996a , 6 ноября 2017 г.)
status
: не запутайтесь подмодулями в исключенных каталогах
Мы тщательно передаем exclude
флаг treat_directory()
функции, чтобы мы могли указать, что файлы в ней исключаются, а не не отслеживаются при рекурсии.
Но мы еще не относились к субмодулям так же.
Из-за этого git status --ignored --untracked
с подмодулем
submodule
в gitignored tracked/
подмодуль будет отображаться в разделе " 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/