Как добавить подмодуль Git в подкаталог, который исключен в .gitignore? - PullRequest
0 голосов
/ 25 апреля 2020

Допустим, у меня есть следующая структура:

my-project
├── modules
│   ├── my-first-module
│   ├── my-second-module
│   └── my-fourth-module

Я включил каталог modules в мой файл .gitignore и сделал исключение для Мой третий модуль :

/my-project/modules/*
!/my-project/modules/my-third-module/

Затем, когда я выполняю git submodule add git@git.my-app/my-third-module.git из my-project / modules / путь, я получаю:

The following path is ignored by one of your .gitignore files:
my-project/modules/my-third-module
Use -f if you really want to add it.

Кажется, исключение /my-project/modules/my-third-module/ в .gitignore не учитывается.

Итак, я попытался создать пустой мой-третий-модуль каталог, но в этом случае команда git submodule add жалуется:

'my-third-module' already exists and is not a valid git repo

Очевидно, git submodule add требует, чтобы каталог не существовал, поэтому это не путь к go.

Почему исключение my-третьего модуля не учитывается Git?

1 Ответ

0 голосов
/ 25 апреля 2020

Как упоминалось в этом ответе :

Если не указано --force, submodule add проверяет, игнорируется ли путь назначения, вызывая git add --dry-run --ignore-missing

Итак, я выполнил git add --dry-run --ignore-missing my-third-module и получил:

The following paths are ignored by one of your .gitignore files:
my-project/modules/my-third-module
Use -f if you really want to add them.

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

После того, как я вручную создал my-third-module , я снова выполнил команду git add, и теперь все в порядке.
Это означает, что Git необходимо создать каталог для быть в состоянии исключить это. Но так как он создан, он хорошо исключен.
Команда git submodule add просто не берет это на себя автоматически.

Поэтому безопасно использовать -f в этом случае для добавления подмодуля:

git submodule add -f git@git.my-app/my-third-module.git

Каталог my-third-module будет полностью исключен из игнорирования Git после его создания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...